2 votes

AppleScript: Échec de la création d'un nouvel iTerm2

J'ai le code AppleScript suivant dans une action Run AppleScript dans Automator :

on run {input, parameters}
    set appName to "iTerm"
    if application appName is not running then
        tell application appName to activate
    end if
    tell application "iTerm"
        tell current session of current tab of current window
            write text "cd Desktop"
            split horizontally with default profile
            split vertically with default profile

        tell second session of current tab of current window
            write text "whoami"

        tell third session of current tab of current window
            write text "ls -al"
            split vertically with default profile

        tell fourth session of current tab of current window
            write text "echo Hello World"

    return input
end run

Cependant, l'application fonctionne bien seulement s'il y a déjà une instance d'iTerm ouverte. Elle n'en ouvrira pas une nouvelle pour moi.

Comment devrais-je le modifier pour qu'il lance une nouvelle fenêtre iTerm et exécute la division en quatre sessions et l'exécution de commande ?

3voto

user3439894 Points 52496

Juste après tell application "iTerm" ajoutez :

if (window count) is equal to 0 then reopen

Cela ouvrira une nouvelle fenêtre s'il n'y en a pas d'ouverte mais que iTerm est en cours d'exécution.


Vous pouvez également utiliser le code AppleScript d'exemple suivant pour vous assurer que window 1 existe avant de continuer, s'il n'était pas déjà ouvert.

if (window count) is equal to 0 then
    reopen
    repeat until exists window 1
        delay 0.01
    end repeat
end if

Par ailleurs, si window 1 existe mais est réduit, votre code s'exécutera tout de même dans la fenêtre réduite. Si c'est un problème, alors vous devrez coder pour ce scénario ou simplement toujours ouvrir une nouvelle fenêtre pour exécuter votre code, par exemple :

set myWindow to (create window with default profile)
repeat until exists myWindow
    delay 0.01
end repeat

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