วิธีการคลิกที่ไอคอนใน dock == เปิดอินสแตนซ์ใหม่


16

ฉันมีแอพพลิเคชั่นหลายตัวใน Dock ที่สามารถเปิดได้หลายอินสแตนซ์ (เช่น Chrome, iTerm, Sublime และอื่น ๆ )

เมื่อฉันคลิกที่ไอคอนใดไอคอนหนึ่งฉันต้องการให้หน้าต่างใหม่เปิดขึ้น (นี่คือสิ่งที่จะเกิดขึ้นหากไม่มีหน้าต่างเปิดอยู่ในขณะนี้) อย่างไรก็ตามหากมีการเปิดอินสแตนซ์ไว้

สิ่งนี้จะน่ารำคาญเป็นพิเศษเมื่ออินสแตนซ์อยู่ในอินสแตนซ์บนเดสก์ท็อปอื่นทั้งหมดและทำให้เดสก์ทอปของฉันเปลี่ยน

มีการตั้งค่าที่คุณสามารถตั้งค่าเพื่อให้มันเมื่อคุณคลิกที่ไอคอนมันจะเปิดหน้าต่างใหม่แทนการเปลี่ยนเส้นทางคุณไปยังหน้าต่างที่เปิดอยู่แล้ว?


2
ฉันสามารถแสดงวิธีการทำเช่นนี้กับ AppleScript เล็กน้อยที่คุณสามารถเก็บไว้ใน Dock ได้
Ian C.

หรือคุณสามารถกด ctrl + n
CoffeeRain

3
@CoffeeRain Ctrl-N? นั่นอะไร? ไม่ทำอะไรเลยใน iTerm และ Chrome ฉันคิดว่าคุณหมายถึง Cmd-N - แต่ใช้งานได้เฉพาะเมื่อแอปอยู่เบื้องหน้า
Ian C.

@IanC ขออภัยใช่ฉันหมายถึง Cmd-N
CoffeeRain

คำตอบ:


17

คุณสามารถตัดบางสิ่งบางอย่างพร้อมกับ AppleScript และวางไอคอนรูปภาพที่ฉลาด นี่คือวิธีที่คุณจะใช้กับ iTerm / iTerm2

เปิด AppleScript Editor และวางใน AppleScript ต่อไปนี้:

set myapp to "iTerm"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    # What you do here will depend on the program. This works for
    # iTerm but you'll need to look up the actions for other programs
    # since this bit is iTerm-specific.
    tell application "iTerm"
        set myterm to (make new terminal)
        tell myterm
            launch session "Default"
        end tell
    end tell
else
    tell application myapp
        activate
    end tell
end if

คุณสามารถใช้ปุ่ม Run ในเครื่องมือแก้ไขเพื่อทดสอบการทำงาน หากคุณต้องการเปิดโปรไฟล์ที่แตกต่างเปลี่ยน "เริ่มต้น" ในบรรทัดที่ 12 เป็นชื่อของโปรไฟล์ที่คุณต้องการเปิด

ตอนนี้บันทึก AppleScript นี้ ในกล่องโต้ตอบบันทึกภายใต้ "รูปแบบไฟล์" ที่ด้านล่างเลือก "แอปพลิเคชัน" จากรายการ

ฉันบันทึกของฉันเป็น "ใหม่ iTerm.app" บนเดสก์ท็อปของฉัน

ตอนนี้ทุกครั้งที่ฉันคลิกที่ "ใหม่ iTerm.app" บนเดสก์ท็อปของฉันฉันจะได้รับหน้าต่าง iTerm ใหม่ ฉันสามารถลาก "New iTerm.app" ไปยัง Dock ของฉันและจะเป็นไอคอน Dock ที่ฉันสามารถคลิกได้ทุกเมื่อที่ต้องการเปิดหน้าต่าง iTerm ใหม่ แต่ไอคอนเป็นไอคอน AppleScript ทั่วไป

ลองเปลี่ยนเป็นไอคอน iTerm เลือก "ใหม่ iTerm.app" บนเดสก์ท็อปและคลิก Cmd-I เพื่อเปิดหน้าจอคุณสมบัติสำหรับแอปพลิเคชัน

ตอนนี้ไปที่/Applicationsหน้าต่าง Finder ค้นหา iTerm ในรายการแอพพลิเคชั่นที่ติดตั้งเลือกแล้วคลิก Cmd-I เพื่อเปิดหน้าจอคุณสมบัติสำหรับแอพพลิเคชั่น iTerm

คลิกที่ไอคอนในหน้าต่างข้อมูล iTerm เพื่อรับเงาสีน้ำเงินอ่อน ๆ รอบ ๆ กด Cmd-C เพื่อคัดลอกไอคอนไปยังคลิปบอร์ด

ตอนนี้คลิกที่ไอคอนในหน้าต่างข้อมูล "New iTerm.app" และกด Cmd-V เพื่อวางไอคอน iTerm ลงบนแอปพลิเคชัน "New iTerm.app"

คัดลอกไอคอนจาก iTerm ไปยัง New iTerm

ตอนนี้มันควรจะมีไอคอน iTerm

คุณสามารถย้าย "New iTerm.app" ไปยัง/Applicationsโฟลเดอร์ของคุณได้ถ้าต้องการ ลากจากโฟลเดอร์ที่คุณตัดสินใจที่จะเก็บไว้กลับไปที่ท่าเรือของคุณและตอนนี้คุณสามารถคลิกที่มันใน Dock เพื่อเปิดหน้าต่าง iTerm ใหม่ได้ทุกคลิก

หากคุณต้องการแยกความแตกต่างจากไอคอน iTerm.app Dock ที่กำลังทำงานอยู่คุณสามารถวางไอคอนลงในโปรแกรมแก้ไขภาพเช่น Pixelmator และเพิ่มสีแดงขนาดใหญ่+ลงไปเพื่อระบุว่าเป็นไอคอนสำหรับ iTerm ใหม่ หน้าต่างแทนไอคอนเพื่อกดเพื่อดูการออกให้เปิดแอปพลิเคชั่น iTerm

ต่อไปนี้เป็นสคริปต์เพิ่มเติมสำหรับแอปพลิเคชันอื่นเพื่อให้คุณเริ่มต้นปรับแต่งสิ่งต่าง ๆ :

Google Chrome (หน้าต่างใหม่)

set myapp to "Google Chrome"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    tell application "Google Chrome"
        make new window
    end tell
else
    tell application myapp
        activate
    end tell
end if

Google Chrome (แท็บใหม่)

set myapp to "Google Chrome"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    tell application "Google Chrome"
        make new tab at end of tabs of window 1
    end tell
else
    tell application myapp
        activate
    end tell
end if

ข้อความประเสริฐ 2

น่าเสียดายที่ ST2 ดูเหมือนไม่มีส่วนขยายที่สามารถเข้าถึงได้ AppleScript คุณสามารถดูที่เครื่องมือบรรทัดคำสั่ง OS X ที่เรือ ST2 กับ คุณสามารถเรียกสิ่งนั้นได้จากสคริปต์ง่ายๆใน Dock เพื่อเปิดหน้าต่างใหม่ใน ST2 ดังนั้น:

set myapp to "Sublime Text 2"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    # Assumes you've installed the subl command line tool for ST2
    # in to /usr/local/bin. Adjust accordingly.
    do shell script "/usr/local/bin/subl --new-window"
else
    tell application myapp
        activate
    end tell
end if

2
คำตอบที่ยอดเยี่ยมพร้อมตัวอย่างที่ชัดเจนครอบคลุมกรณีการใช้งานที่แตกต่างกันและรายละเอียด! ขอบคุณ!
Adam Davis

@ AdamDavis ฉันเพิ่งเริ่มต้นด้วย AppleScript ดังนั้นจึงเป็นแบบฝึกหัดที่ดีในการทดสอบสิ่งที่ฉันได้เรียนรู้
Ian C.

สามารถใช้ชื่อนี้เพื่อรับชื่อแอปพลิเคชันที่กำลังทำงานอยู่หรือไม่
วิลเลียม

มีวิธีการตรวจสอบหรือไม่ว่าแอพทำงานอยู่หรือไม่และไม่ได้อยู่บนเดสก์ท็อปปัจจุบัน? ฉันชอบหน้าต่างใหม่เฉพาะในกรณีที่หน้าต่างที่มีอยู่อยู่บนเดสก์ท็อปอื่น
adamdport
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.