Lancer un script dans une nouvelle fenêtre iTerm2
Ouvrir iTerm2 dans un répertoire de projet précis, exécuter un script de configuration, puis basculer dans un shell interactif lorsque le script se termine. Le même schéma que l'exemple Ghostty, avec une petite particularité.
Le piège
iTerm2 expose un drapeau --command= qui prend toute une ligne shell comme valeur unique, exactement comme celui de Ghostty. Il n'est pas documenté sur iterm2.com (seulement dans la sortie --help du binaire), mais il est stable et se comporte comme on s'y attend.
La seule différence avec Ghostty : iTerm n'a aucun équivalent à --working-directory=. Vous fixez le répertoire de travail vous-même en faisant un cd au tout début de la commande.
Configuration qui fonctionne
{
"label": "Ouvrir un shell projet (prod)",
"type": "command",
"command": "open",
"args": [
"-na", "iTerm",
"--args",
"--command=cd /Users/vous/Code/votre-projet && ./scripts/setup-env.sh prod; exec zsh -i"
]
}
Remplacez ces valeurs par les vôtres :
cd /Users/vous/Code/votre-projet: chemin absolu vers le répertoire du projet../scripts/setup-env.sh prod: votre script de configuration et les arguments qu'il attend.
Pourquoi ça fonctionne
open -na iTermdémarre une nouvelle instance d'iTerm et transmet tout ce qui suit--args. Le démarrage direct en ligne de commande n'est pas pris en charge sur macOS, comme pour Ghostty.- iTerm encapsule la valeur de
--command=dans/usr/bin/login -fpq $USER $SHELL -c <valeur>. La partieloginlance votre shell en tant que shell de connexion, ce qui charge automatiquement.zprofileet.zshrc. Homebrew, nvm et tout ce qui se trouve normalement sur votrePATHest déjà là. Pas besoin d'encapsuler manuellement aveczsh -lc. - Le
cdau début de la commande fixe le répertoire de travail dans le nouveau shell. exec zsh -ià la fin remplace le processus du script par un shell interactif, ce qui garde la fenêtre iTerm ouverte après la configuration.
Variante : ouvrir un nouvel onglet dans la fenêtre iTerm existante
open -na iTerm ouvre toujours une nouvelle fenêtre. Si vous préférez un nouvel onglet dans la fenêtre iTerm courante, abandonnez l'approche CLI et passez par AppleScript :
{
"label": "Ouvrir un shell projet (prod)",
"type": "applescriptFile",
"applescriptFile": "scripts/open-iterm-tab.applescript"
}
Avec scripts/open-iterm-tab.applescript (résolu relativement au directory de l'outil) :
tell application "iTerm"
activate
tell current window
create tab with default profile command "/bin/zsh -lc 'cd /Users/vous/Code/votre-projet && ./scripts/setup-env.sh prod; exec zsh -i'"
end tell
end tell
Cette variante exige la permission Automatisation (macOS la demande au premier lancement) et c'est la seule façon de contrôler le placement de l'onglet.
Prérequis
- iTerm2 installé
zshcomme shell par défaut (le cas sur macOS 10.15 et plus)- Pour la variante AppleScript uniquement : permission d'Automatisation pour Runyard → iTerm, dans Réglages système → Confidentialité et sécurité → Automatisation.