bambouville

tmux

Tessera spricht den Control Mode von tmux (tmux -CC) nativ: Fenster und Bereiche sind vollwertige Bedienelemente, kein Text-Passthrough. Vorausgesetzt wird ein auf dem Server installiertes tmux.

Warum tmux

In einer tmux-gestützten Sitzung lebt die Shell auf dem Server. Tessera schließen, das WLAN verlieren, auf Mobilfunk wechseln, das Gerät schlafen legen — nichts davon beendet Ihre Arbeit. Verbinden Sie sich neu, und Sie sind genau da, wo Sie aufgehört haben.

Anhängen

Der Startmodus Auto-tmux hängt sich an eine Host-eigene Sitzung mit dem deterministischen Namen tessera-XXXXXXXX an (oder legt sie an); der Name bleibt auch über Neuinstallationen der App hinweg erhalten. benanntes tmux hängt sich an einen Sitzungsnamen Ihrer Wahl an. Beides wird pro Host im Host-Editor eingestellt.

Der deterministische Name sorgt dafür, dass zwei Ihrer Geräte mit demselben Host-Eintrag in derselben tmux-Sitzung landen — genau das macht das Übergeben einer Sitzung zwischen ihnen nahtlos.

Kommt tmux nicht hoch, lässt Tessera Sie nicht warten: ein Host ohne installiertes tmux, eine tmux-Sitzung, die nicht startet, oder Dotfiles, die beim Login bereits exec tmux ausführen — all das setzt Sie in eine einfache Shell, mit einem Banner, das den Grund nennt („Dieser Host startet beim Login sein eigenes tmux – diese Sitzung wird als einfaches Terminal angezeigt“). Siehe wenn eine Verbindung hängt.

Fenster

tmux-Fenster erscheinen als Tabs in der oberen Leiste der Sitzung, in der Reihenfolge ihrer Indizes. Eine +-Taste in der Leiste öffnet ein neues Fenster; sind mehr Tabs vorhanden, als Platz haben, listet ein Überlauf-Steuerelement jedes Fenster auf. Jeder Tab hat ein Schließen-Steuerelement, und Fenster lassen sich über die ⌘K-Palette umbenennen — der Name gilt für alle Clients, die an der Sitzung hängen.

Kurzbefehl Aktion
⌘T neues Fenster
⇧⌘W Bereich / Fenster schließen
⇧⌘[ / ⇧⌘] vorheriges / nächstes Fenster
⌘1⌘9 zu Fenster 1–9 springen

Bereiche

Bereiche sind echte tmux-Bereiche, gesteuert über den Control Mode.

Kurzbefehl Aktion
⌘D nebeneinander teilen
⇧⌘D übereinander teilen
⌘[ / ⌘] Bereiche durchschalten
⇧⌘↩ Bereich zoomen / Zoom aufheben
Eine tmux-Sitzung in Tessera mit drei Fenster-Tabs am oberen Rand und zwei nebeneinanderliegenden Bereichen: links eine Shell mit der Ausgabe von git log, rechts ein laufendes htop.
Zwei Bereiche in einem tmux-Fenster, darüber die Fenster der Sitzung als Tabs. Jeder Bereich hat seine eigene Titelleiste und ein Schließen-Steuerelement.

Auf dem iPhone

Das Anhängen von einem iPhone bringt Ihr Layout nie durcheinander: Aufteilungen und Zoom-Zustand bleiben so, wie der größere Bildschirm sie hinterlassen hat, und das Telefon zeigt über den Umschalter jeweils einen Bereich. Siehe Tessera auf dem iPhone.

mosh + tmux

Über mosh läuft das Terminal auf UDP, während die tmux-Tabs einen zweiten SSH-Seitenkanal nutzen. Über diesen Seitenkanal läuft bei mosh-Hosts auch die Portweiterleitung — und echtes Scrollback.

Signaltöne

Erst die Verdrahtung über den tmux-Control-Mode erlaubt es Tessera, Terminal-Signaltöne an die Mitteilungen weiterzureichen — pro Fenster, wobei der Tab markiert wird, der den Signalton gesendet hat.

Fallstricke

  • Umgebungsvariablen und Startskripte laufen nur, wenn die tmux-Sitzung startet. Beenden Sie die Sitzung nach einer Änderung auf dem Server (tmux kill-session), damit die Änderungen greifen.
  • Gleichzeitig aus Tessera und aus einem anderen Client anzuhängen funktioniert, aber beide Clients teilen sich dieselben Fenster — das ist tmux, kein Fehler. Ist der andere Client Ihr eigenes iPhone oder iPad, geht Tessera höflich mit dem Konflikt um — siehe Steuerung zurückholen.
  • Wirkt die Ausgabe nach heftigen Neuzeichnungen verklemmt, erzwingt ⌘R (iPad) ein vollständiges Neuzeichnen. Und hängt sich eine Sitzung einmal an, ohne zu zeichnen, sagt Tessera das („drücke eine beliebige Taste, um ihn aufzuwecken“) — Ihr erster Tastendruck holt den Bildschirm hervor.