7 votes

Quelle est la commande Applescript pour afficher ou masquer la fenêtre d'iTerm2

Est-ce que quelqu'un connaît la commande Applescript pour afficher ou masquer une fenêtre de terminal iTerm2 ? J'utilise iTerm2 dans une fenêtre de commande de style guake et j'utilise actuellement une fenêtre et de nombreux onglets.

Mon cas d'utilisation : J'ai réussi à ouvrir un nouvel onglet iTerm2 depuis Forklift (voir ici), mais j'ai encore besoin d'activer iTerm2 manuellement avec mon raccourci d'affichage/masquage.

16voto

sameetandpotatoes Points 3881

Voici plusieurs options (aucune d'entre elles n'a été testée, donc testez et voyez laquelle fonctionne pour vous) :

Option 1:

tell application "iTerm2" to activate
tell application "System Events" to tell process "iTerm2" to keystroke "h" using command down

Note : Keystroke peut être remplacé par m si vous voulez que iTerm2 soit minimisé dans le dock avec l'effet Genie.

Option 2:

tell application "Finder"
set visible of process "iTerm2" to false
end tell 

Option 3:

tell application "System Events" to tell process "iTerm2" to set visible to false

Note : Le nom du processus peut être simplement iTerm au lieu de iTerm2. J'ai ouvert iTerm sur mon Mac et ensuite Monitor d'activité, et le Nom du Processus qu'il affiche est iTerm. Veuillez ajuster en conséquence si cela ne fonctionne pas pour vous.

Liens et Ressources

Voici un excellent lien WikiBooks qui décrit exactement ce dont vous avez besoin.

Veuillez me faire savoir quelle option fonctionne pour vous afin que je puisse éditer la question et inclure uniquement l'option qui fonctionne.

Édition :

Si vous faites de la fenêtre iTerm l'application la plus en avant (Faites attention, vous ne voulez pas que la fenêtre AppleScript soit l'application la plus en avant), essayez ce script :

tell application "System Events"
    set frontProcess to first process whose frontmost is true
    set visible of frontProcess to false
end tell

4voto

tell application "System Events" to tell (process 1 where frontmost is true)
    if name is "iTerm" then
        set visible to false
        return
    end if
end tell
tell application "iTerm"
    reopen -- open a default window if there are no open windows
    activate -- make frontmost
end tell

Si d'autres personnes cherchaient un moyen d'afficher ou de masquer iTerm en général, vous pouvez définir un raccourci pour cela dans les préférences ou utiliser Alfred :

1voto

therealmarv Points 278

J'ai essayé chacune de ces solutions. Aucune d'entre elles n'a fonctionné comme prévu. Elles ont toutes ouvert un tout nouveau terminal ou n'ont pas fonctionné. La seule solution qui a fonctionné pour moi dans la fenêtre en plein écran iTerm Hotkey Window a été de simuler des frappes de touche.

Assurez-vous de désactiver Raccourci clavier ouvre une fenêtre dédiée avec un profil dans les paramètres, sinon vous devrez même simuler cette pression de touche qui a causé un gros problème pour mon problème.

description de l'image

Voici le fichier /Applications/ForkLift.app/Contents/Resources/OpenInTerminal.applescript qui :

  • ouvre mon application de terminal en plein écran, ouvre une nouvelle fenêtre de session (ma session est nommée Hot, changez-la en Default ou en le type de session désiré à partir des profils)
  • attend 1 seconde (sinon la nouvelle session n'est pas reconnue)
  • change de répertoire et efface l'écran

tell application "iTerm"
    activate

    try
        tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
        delay 1
        set _session to current session of current terminal
    on error
        set _term to (make new terminal)
        tell _term
            launch session "Hot"
            set _session to current session
        end tell
    end try

    tell _session
        write text "cd _forklift_path_placeholder_;clear;"
    end tell
end tell

1voto

Michael Dimmitt Points 169

tell application "iTerm2" to activate set miniaturized of window 1 to true end tell http://macscripter.net/viewtopic.php?id=12501

la formulation de votre question me fait penser que vous voulez des fenêtres individuelles hors de vue. La fonction de masquage sur mac masquera tout. J'avais besoin d'une fenêtre hors de vue. l'URL ci-dessus était utile.

votre solution pourrait ne pas être de cacher une seule fenêtre mais plutôt de minimiser une seule fenêtre.

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