Comment faire en cliquant sur l'icône dans le dock == ouvrir une nouvelle instance

16

J'ai plusieurs applications dans mon dock qui peuvent avoir plusieurs instances ouvertes (par exemple, Chrome, iTerm, Sublime, etc.)

Lorsque je clique sur l'une des icônes, je veux qu'une nouvelle fenêtre s'ouvre (c'est ce qui se passe si aucune fenêtre n'est actuellement ouverte). Cependant, si une instance est déjà ouverte, elle m'amène simplement à cette instance.

Cela devient particulièrement ennuyeux lorsque l'instance se trouve sur une autre instance de bureau et entraîne la modification de mon bureau.

Y a-t-il un paramètre que vous pouvez définir pour le rendre si vous cliquez sur l'icône, il ouvre une nouvelle fenêtre au lieu de vous rediriger vers une fenêtre déjà ouverte?

JD Isaacks
la source
2
Je pourrais vous montrer comment faire cela avec un peu d'AppleScript que vous pourriez garder dans le Dock.
Ian C.
Ou vous pouvez simplement appuyer sur ctrl + n.
CoffeeRain
3
@CoffeeRain Ctrl-N? Qu'est-ce que c'est? Ne fait rien dans iTerm et Chrome. Je pense que vous vouliez dire Cmd-N - mais cela ne fonctionne que si l'application est au premier plan.
Ian C.
@IanC. Désolé, oui, je voulais dire Cmd-N.
CoffeeRain

Réponses:

17

Vous pouvez claquer quelque chose avec de l'AppleScript et du collage intelligent d'images d'icônes. Voici comment vous le feriez pour iTerm / iTerm2.

Ouvrez l'éditeur AppleScript et collez le code AppleScript suivant:

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

Vous pouvez utiliser le bouton Exécuter dans l'éditeur pour tester son fonctionnement. Si vous souhaitez ouvrir un autre profil, remplacez «Par défaut» à la ligne 12 par le nom du profil que vous souhaitez ouvrir.

Maintenant, enregistrez ce AppleScript. Dans la boîte de dialogue Enregistrer sous "Format de fichier" en bas, sélectionnez "Application" dans la liste.

J'ai enregistré le mien en tant que "Nouveau iTerm.app" sur mon bureau.

Maintenant, chaque fois que je clique sur "Nouveau iTerm.app" sur mon bureau, j'obtiens une nouvelle fenêtre iTerm. Je peux faire glisser "New iTerm.app" vers mon Dock et ce sera une icône de Dock sur laquelle je pourrai cliquer à tout moment pour ouvrir une nouvelle fenêtre iTerm. Mais l'icône est l'icône générique AppleScript.

Changeons-le en icône iTerm. Sélectionnez "Nouveau iTerm.app" sur le bureau et cliquez sur Cmd-I pour afficher l'écran des propriétés de l'application.

/ApplicationsNaviguez maintenant dans une fenêtre du Finder, recherchez iTerm dans la liste des applications installées, sélectionnez-le et cliquez sur Cmd-I pour ouvrir l'écran des propriétés de l'application iTerm.

Cliquez sur l'icône dans la fenêtre d'informations iTerm pour obtenir une douce ombre bleue autour d'elle. Appuyez sur Cmd-C pour copier l'icône dans le presse-papiers.

Maintenant, cliquez sur l'icône dans la fenêtre d'information "Nouveau iTerm.app" et appuyez sur Cmd-V pour coller l'icône iTerm sur l'application "Nouveau iTerm.app".

Copie de l'icône d'iTerm vers le nouvel iTerm

Il devrait maintenant avoir une icône iTerm.

Vous pouvez déplacer le "Nouveau iTerm.app" vers votre /Applicationsdossier si vous le souhaitez. Faites-le glisser du dossier dans lequel vous décidez de le conserver, vers votre dock, et vous pouvez maintenant cliquer dessus dans le Dock pour ouvrir une nouvelle fenêtre iTerm à chaque clic.

Si vous vouliez pouvoir la distinguer de l'icône du Dock iTerm.app en cours d'exécution, vous pourriez envisager de coller l'icône dans un éditeur d'image comme Pixelmator et d'y ajouter un grand rouge +afin qu'elle soit clairement identifiée comme l'icône à appuyer pour un nouvel iTerm. fenêtre au lieu de l'icône sur laquelle appuyer pour voir l'application iTerm en cours d'ouverture.

Voici quelques scripts supplémentaires pour d'autres applications pour vous aider à personnaliser les choses:

Google Chrome (nouvelle fenêtre)

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 (nouvel onglet)

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

Sublime Text 2

Malheureusement, ST2 ne semble pas avoir d'extensions accessibles par AppleScript. Vous pouvez toujours jeter un œil à l'outil de ligne de commande OS X fourni avec ST2 . Vous pouvez appeler cela à partir d'un simple script dans le Dock pour ouvrir une nouvelle fenêtre dans ST2. Donc:

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
Ian C.
la source
2
Grande réponse avec des exemples clairs couvrant différents cas d'utilisation et les détails! Merci!
Adam Davis
@AdamDavis Je commence tout juste avec AppleScript, donc c'était un bon exercice pour tester ce que j'ai appris.
Ian C.
Cela pourrait-il être utilisé pour obtenir le nom de l'application en cours d'exécution?
William
Existe-t-il un moyen de vérifier si l'application est en cours d'exécution ET qu'elle n'est PAS sur le bureau actuel? J'aimerais une nouvelle fenêtre uniquement si la fenêtre existante est sur un autre bureau.
adamdport