cli-anything-iterm2
Zustandsbehaftetes CLI-Tool für iTerm2. Steuert einen laufenden iTerm2-Prozess über die iTerm2-Python-API per WebSocket.
Voraussetzungen
- macOS + iTerm2 läuft:
brew install --cask iterm2 - Python-API aktiviert: iTerm2 → Einstellungen → Allgemein → Magie → Python-API aktivieren
- Installation:
pip install cli-anything-iterm2(oderpip install -e .aus dem Quellverzeichnis)
Grundlegende Syntax
cli-anything-iterm2 [--json] <gruppe> <befehl> [OPTIONEN] [ARGUMENTE]
Verwenden Sie immer --json für maschinenlesbare Ausgabe (erforderlich für die Verwendung durch Agenten).
Befehlsgruppen
| Gruppe | Zweck |
|---|---|
app | App-Status, Workspace-Momentaufnahme, Kontextverwaltung, app-weite Variablen, modale Dialoge, Dateipanels |
window | Fenster erstellen, auflisten, schließen, in der Größe ändern, im Vollbildmodus anzeigen |
tab | Tabs erstellen, auflisten, schließen, aktivieren; Split-Panes nach Richtung navigieren |
session | Text senden, rohe Bytes injizieren, Bildschirm lesen, vollständigen Scrollback, Panes teilen, Eingabeaufforderung erkennen |
profile | Profile auflisten, Profildetails abrufen, Farbvoreinstellungen auflisten/anwenden |
arrangement | Fensterlayouts speichern und wiederherstellen |
tmux | Vollständige tmux -CC-Integration: Bootstrapping, Verbindungen, Fenster, Befehle |
broadcast | Tastatureingaben über Broadcast-Domains hinweg synchronisieren |
menu | Beliebiges iTerm2-Menüelement programmatisch aufrufen |
pref | Globale iTerm2-Einstellungen lesen/schreiben; alle gültigen Schlüssel auflisten; tmux-Einstellungen |
Orientierung in einer bestehenden Workspace
Verwenden Sie app snapshot, wenn Sie in einer Sitzung mit vorhandenen Panes landen und verstehen müssen, was läuft, ohne den gesamten Bildschirminhalt jeder Pane zu lesen:
cli-anything-iterm2 --json app snapshot
Gibt Namen, aktuelles Verzeichnis, Vordergrundprozess, user.role-Bezeichnung und die letzte sichtbare Ausgabezeile für jede Sitzung in allen Fenstern zurück.
Namenskonvention – Bezeichnen Sie Panes beim Einrichten einer Workspace, damit Sie sie später wiederfinden:
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 zeigt diese Rollen zusammen mit Prozess und Pfad an und gibt Ihnen so ein vollständiges Bild in einem einzigen Aufruf.
Typischer Agent-Workflow
# 1. Orientieren – Momentaufnahme jeder Sitzung: Name, Pfad, Prozess, Rolle, letzte Ausgabezeile
cli-anything-iterm2 --json app snapshot
# 2. Kontext festlegen (speichert Fenster-/Tab-/Sitzungs-IDs für nachfolgende Befehle)
cli-anything-iterm2 app current
# 3. Interagieren – kein --session-id nötig, sobald der Kontext gesetzt ist
cli-anything-iterm2 session send "git status"
cli-anything-iterm2 --json session scrollback --tail 200 --strip
# 4. Multi-Pane-Workspace erstellen – Panes beschriften, damit die Momentaufnahme sie später identifiziert
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"
Referenzdateien
Lesen Sie nur das, was die Aufgabe erfordert – jede Datei behandelt einen einzelnen, klar abgegrenzten Bereich (~10–30 Zeilen):
| Datei | Lesen, wenn Sie ... benötigen |
|---|---|
references/session-io.md | Text senden, Bytes injizieren, Bildschirm/Scrollback lesen, Auswahl abrufen |
references/session-control.md | Panes teilen, Sitzungen aktivieren/schließen, Größe ändern, umbenennen, Sitzungsvariablen |
references/session-shell-integration.md | wait-prompt, wait-command-end, get-prompt; zuverlässiges send→wait→read-Muster |
references/layout-window-tab.md | Fenster und Tabs erstellen/schließen/größe ändern, Split-Panes navigieren |
references/layout-arrangement.md | Fensterlayouts speichern und wiederherstellen |
references/app-context.md | Momentaufnahme (Orientierung), Status, Kontextverwaltung, App-Variablen, modale Dialoge, Dateipanels |
references/profile-pref.md | Profile auflisten/abrufen/Voreinstellungen, Einstellungen lesen/schreiben, tmuz-Voreinstellungs-Kürzel |
references/broadcast-menu.md | Tastatureingaben an mehrere Panes senden, Menüelemente aufrufen |
references/tmux-commands.md | Alle tmux-CLI-Befehle (Bootstrapping, senden, Tabs, create-window, set-visible) |
references/tmux-guide.md | Vollständiger tmux -CC-Workflow, Pane→Sitzungs-ID-Zuordnung |
references/json-session.md | --json-Schemata für Sitzung, Fenster, Tab, Bildschirm, Scrollback, Injizieren |
references/json-tmux-app.md | --json-Schemata für tmux, App-Dialoge, Einstellungen, Fehler |
REPL-Modus
Führen Sie das Programm ohne Argumente aus, um eine interaktive REPL zu starten, die den Kontext zwischen den Befehlen beibehält:
cli-anything-iterm2