Come fare clic sull'icona nel dock == per aprire una nuova istanza


16

Ho diverse applicazioni nel mio dock che possono avere più istanze aperte (es. Chrome, iTerm, Sublime, ecc.)

Quando clicco su una delle icone, voglio che si apra una nuova finestra (questo è ciò che accade se nessuna finestra è attualmente aperta) Tuttavia, se un'istanza è già aperta, mi porta solo a quell'istanza.

Ciò diventa particolarmente fastidioso quando l'istanza si trova su un'altra istanza desktop e causa il cambiamento del desktop.

C'è un'impostazione che puoi configurare per farlo in modo che quando fai clic sull'icona, si apre una nuova finestra invece di reindirizzarti a una finestra già aperta?


2
Potrei mostrarti come farlo con un po 'di AppleScript che potresti tenere nel Dock.
Ian C.

Oppure potresti semplicemente premere ctrl + n.
CoffeeRain

3
@CoffeeRain Ctrl-N? Cos'è quello? Non fa nulla in iTerm e Chrome. Penso che tu intendessi Cmd-N, ma funziona solo se l'app è in primo piano.
Ian C.

@IanC. Scusa, sì, intendevo dire Cmd-N.
CoffeeRain

Risposte:


17

Puoi raggruppare qualcosa insieme ad alcuni AppleScript e ad alcune icone intelligenti che incollano le immagini. Ecco come lo faresti per iTerm / iTerm2.

Apri l'Editor AppleScript e incolla il seguente 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

È possibile utilizzare il pulsante Esegui nell'editor per verificare che funzioni. Se si desidera aprire un profilo diverso, cambiare "Predefinito" alla riga 12 con il nome del profilo che si desidera aprire.

Ora salva questo AppleScript. Nella finestra di dialogo Salva in "Formato file" in basso selezionare "Applicazione" dall'elenco.

Ho salvato il mio come "Nuovo iTerm.app" sul mio desktop.

Ora ogni volta che clicco su "Nuovo iTerm.app" sul mio desktop, ottengo una nuova finestra iTerm. Posso trascinare "New iTerm.app" sul mio Dock e sarà un'icona Dock su cui posso fare clic ogni volta che voglio aprire una nuova finestra iTerm. Ma l'icona è l'icona generica di AppleScript.

Cambiamolo sull'icona iTerm. Seleziona "Nuovo iTerm.app" sul desktop e fai clic su Cmd-I per visualizzare la schermata delle proprietà dell'applicazione.

Ora vai /Applicationsin una finestra del Finder, trova iTerm nell'elenco delle applicazioni installate, selezionalo e fai clic su Cmd-I per aprire la schermata delle proprietà dell'applicazione iTerm.

Fai clic sull'icona nella finestra informativa di iTerm in modo da ottenere una morbida ombra blu attorno ad essa. Premi Cmd-C per copiare l'icona negli appunti.

Ora fai clic sull'icona nella finestra informativa "Nuovo iTerm.app" e premi Cmd-V per incollare l'icona iTerm nell'applicazione "Nuovo iTerm.app".

Copia dell'icona da iTerm a New iTerm

Ora dovrebbe avere un'icona iTerm.

Se lo desideri, puoi spostare il "Nuovo iTerm.app" nella tua /Applicationscartella. Trascinalo dalla cartella in cui decidi di tenerlo, torna al tuo dock e ora puoi fare clic su di esso nel Dock per aprire una nuova finestra iTerm ad ogni clic.

Se volessi essere in grado di distinguerlo dall'icona del dock iTerm.app in esecuzione, potresti considerare di incollare l'icona in un editor di immagini come Pixelmator e aggiungere un grande rosso +ad esso in modo che sia chiaramente identificato come l'icona da premere per un nuovo iTerm finestra invece dell'icona da premere per vedere l'uscita, apri l'applicazione iTerm.

Ecco alcuni altri script per alcune altre applicazioni per iniziare a personalizzare le cose:

Google Chrome (nuova finestra)

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 (nuova scheda)

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

Testo sublime 2

Sfortunatamente ST2 non sembra avere estensioni accessibili per AppleScript. Puoi sempre dare un'occhiata allo strumento da riga di comando OS X fornito con ST2 . Puoi chiamarlo da un semplice script nel Dock per aprire una nuova finestra in ST2. Così:

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
Ottima risposta con esempi chiari che coprono diversi casi d'uso e i dettagli! Grazie!
Adam Davis,

@AdamDavis Ho appena iniziato con AppleScript, quindi è stato un buon esercizio testare ciò che ho imparato.
Ian C.

Potrebbe essere usato per ottenere il nome dell'applicazione attualmente in esecuzione?
William,

C'è un modo per verificare se l'app è in esecuzione E NON è sul desktop corrente? Mi piacerebbe una nuova finestra solo se la finestra esistente si trova su un altro desktop.
adamdport,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.