Cependant, chaque fois que je clique sur l'icône de l'application, cela crée une nouvelle fenêtre de terminal et ce que je veux, c'est juste ramener la fenêtre existante au premier plan si elle a déjà été créée.
Que dois-je faire pour y parvenir ?
Les exemple AppleScript code L'essai, présenté ci-dessous, a été réalisé en script Éditeur en tant que script et sauvegardé en tant que AppleScript application , sous MacOS Catalina y MacOS Big Sur avec Langue et région paramètres en Préférences du système fixé à Anglais (US) - Primaire et a fonctionné pour moi sans problème 1 .
- 1 Assume les paramètres nécessaires et appropriés dans <strong>Préférences du système </strong>> <strong>Sécurité et vie privée </strong>> <strong>Vie privée </strong>ont été fixés/adressés selon les besoins.
Exemple AppleScript code :
set shellCMD to "ssh_connect"
tell application "Terminal"
activate
if exists (tabs of windows whose history contains shellCMD) then
set winID to ¬
the id of the first window ¬
whose history of tab 1 contains shellCMD
set index of window id winID to 1
set frontmost of window id winID to true
else
if (exists window 1) and ¬
(busy of tab 1 of window 1 is false) then
do script shellCMD in window 1
else
do script shellCMD
end if
end if
end tell
Notes :
Les exemple AppleScript code n'est rien d'autre que cela et vise à montrer une façon de coder en fonction de conditions données.
Comme il s'agit d'un programme autonome, le AppleScript application Tel qu'il est actuellement codé, il aura pour effet de
- Si Terminal n'est pas en cours d'exécution, il ouvre Terminal et exécute le
do script
commande dans la première fenêtre.
- Si Terminal est en cours d'exécution et un fenêtre existe avec le valeur de
shellCMD
dans son l'histoire il met cette fenêtre au premier plan, même si elle est réduite.
- Si Terminal est en cours d'exécution et non fenêtre existe, alors un nouveau fenêtre est créé et exécute le programme
do script
commande .
- Si Terminal est en cours d'exécution et non fenêtre existe avec le valeur de
shellCMD
dans son l'histoire y window 1
existe et n'est pas en train de traiter un commande , alors le do script
commande est traité en window 1
.
Vous pouvez ajuster la exemple AppleScript code pour répondre à vos besoins.
Cela devrait fonctionner pour les versions de MacOS de MacOS High Sierra et plus tard.
Pour les versions de MacOS avant de MacOS High Sierra les exemple AppleScript code devra être modifiée en raison de la façon dont les Terminal gère plusieurs onglets dans un fenêtre .
Note : Le <em>exemple </em><strong>AppleScript </strong><em>code </em>n'est que cela et sans aucun élément inclus <em>traitement des erreurs </em>ne contient pas d'éléments supplémentaires <em>traitement des erreurs </em>le cas échéant. Il incombe à l'utilisateur d'ajouter toute <em>traitement des erreurs </em>selon ce qui est approprié, nécessaire ou souhaité. Consultez le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>essayer </strong></a><em>déclaration </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>erreur </strong></a><em>déclaration </em>dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du langage AppleScript </strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec des erreurs </strong></a>. En outre, l'utilisation du <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>délai </strong></a><em>commande </em>peut être nécessaire entre les événements, le cas échéant, par exemple <code>delay 0.5</code> , avec le <em>valeur </em>de la <em>délai </em>de manière appropriée.