1 votes

Comment faire en sorte qu'Automator n'ouvre qu'une seule instance de l'application Terminal ?

J'ai créé une application Automator qui ouvre une fenêtre Terminal et se connecte à un serveur.

tell application "Terminal"
    do script "ssh_connect"
    activate
end tell

Remarque : le ssh_connect est un raccourci que j'ai créé.

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 ?

1voto

user3439894 Points 52496

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.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X