Que fait cli-anything-iterm2 ?
Harnais CLI avec état pour iTerm2. Contrôle un processus iTerm2 en direct via l'API Python iTerm2 sur WebSocket.
Prérequis
- macOS + iTerm2 en cours d'exécution :
brew install --cask iterm2 - API Python activée : iTerm2 → Préférences → Général → Magic → Activer l'API Python
- Installation :
pip install cli-anything-iterm2(oupip install -e .depuis les sources)
Syntaxe de base
cli-anything-iterm2 [--json] <groupe> <commande> [OPTIONS] [ARGUMENTS]
Utilisez toujours --json pour une sortie lisible par machine (obligatoire pour une utilisation par agent).
Groupes de commandes
| Groupe | Objectif |
|---|---|
app | Statut de l'application, instantané de l'espace de travail, gestion du contexte, variables d'application, dialogues modaux, panneaux de fichiers |
window | Créer, lister, fermer, redimensionner, fenêtres en plein écran |
tab | Créer, lister, fermer, activer des onglets ; naviguer entre les panneaux divisés par direction |
session | Envoyer du texte, injecter des octets bruts, lire l'écran, historique complet, panneaux divisés, détection d'invite |
profile | Lister les profils, obtenir les détails d'un profil, lister/appliquer des préréglages de couleurs |
arrangement | Sauvegarder et restaurer les dispositions de fenêtres |
tmux | Intégration complète tmux -CC : bootstrap, connexions, fenêtres, commandes |
broadcast | Synchroniser les frappes entre les panneaux via les domaines de diffusion |
menu | Invoquer n'importe quel élément de menu iTerm2 par programme |
pref | Lire/écrire les préférences globales iTerm2 ; lister toutes les clés valides ; paramètres tmux |
S'orienter dans un espace de travail existant
Utilisez app snapshot lorsque vous arrivez dans une session avec des panneaux existants et que vous devez comprendre ce qui s'exécute sans lire le contenu complet de l'écran pour chaque panneau :
cli-anything-iterm2 --json app snapshot
Retourne le nom, le répertoire courant, le processus au premier plan, l'étiquette user.role et la dernière ligne de sortie visible pour chaque session dans toutes les fenêtres.
Convention de nommage — étiquetez les panneaux lors de la configuration d'un espace de travail afin de pouvoir les retrouver plus tard :
cli-anything-iterm2 session set-var user.role "api-server"
cli-anything-iterm2 session set-var user.role "log-tail"
cli-anything-iterm2 session set-var user.role "editor"
app snapshot remontera ces rôles aux côtés du processus et du chemin, vous donnant une image complète en un seul appel.
Flux de travail typique d'un agent
# 1. S'orienter — instantané de chaque session : nom, chemin, processus, rôle, dernière ligne de sortie
cli-anything-iterm2 --json app snapshot
# 2. Établir le contexte (sauvegarde les ID de fenêtre/onglet/session pour les commandes suivantes)
cli-anything-iterm2 app current
# 3. Interagir — aucun --session-id nécessaire une fois le contexte défini
cli-anything-iterm2 session send "git status"
cli-anything-iterm2 --json session scrollback --tail 200 --strip
# 4. Créer un espace de travail multi-panneaux — étiqueter les panneaux pour que l'instantané les identifie plus tard
cli-anything-iterm2 session split --vertical --use-as-context
cli-anything-iterm2 session send "python3 -m http.server 8000"
cli-anything-iterm2 session set-var user.role "http-server"
Fichiers de référence
Lisez uniquement ce dont la tâche a besoin — chaque fichier couvre un sujet restreint (~10–30 lignes) :
| Fichier | Lisez-le lorsque vous avez besoin... |
|---|---|
references/session-io.md | Envoyer du texte, injecter des octets, lire l'écran/l'historique, obtenir la sélection |
references/session-control.md | Panneaux divisés, activer/fermer des sessions, redimensionner, renommer, variables de session |
references/session-shell-integration.md | wait-prompt, wait-command-end, get-prompt ; motif fiable send→wait→read |
references/layout-window-tab.md | Créer/fermer/redimensionner des fenêtres et des onglets, naviguer entre les panneaux divisés |
references/layout-arrangement.md | Sauvegarder et restaurer les dispositions de fenêtres |
references/app-context.md | Instantané (orientation), statut, gestion du contexte, variables d'application, dialogues modaux, panneaux de fichiers |
references/profile-pref.md | Liste/obtention de profils, préréglages, lecture/écriture des préférences, raccourcis de préférences tmux |
references/broadcast-menu.md | Diffuser des frappes vers plusieurs panneaux, invoquer des éléments de menu |
references/tmux-commands.md | Toutes les commandes CLI tmux (bootstrap, send, tabs, create-window, set-visible) |
references/tmux-guide.md | Flux de travail complet tmux -CC, mappage panneau → ID de session |
references/json-session.md | Schémas --json pour session, fenêtre, onglet, écran, historique, injection |
references/json-tmux-app.md | Schémas --json pour tmux, dialogues d'application, préférences, erreurs |
Mode REPL
Exécutez sans arguments pour un REPL interactif qui maintient le contexte entre les commandes :
cli-anything-iterm2