# 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](https://bambouville.com/docs/de/connections/#startmodi) 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](https://bambouville.com/docs/de/continuity/) 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](https://bambouville.com/docs/de/connections/#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.](https://bambouville.com/docs/assets/img/tmux-panes.png)

*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](https://bambouville.com/docs/de/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](https://bambouville.com/docs/de/port-forwarding/#mosh-und-weiterleitung) — und
[echtes Scrollback](https://bambouville.com/docs/de/mosh/#echtes-scrollback).

## Signaltöne

Erst die Verdrahtung über den tmux-Control-Mode erlaubt es Tessera,
Terminal-Signaltöne an die [Mitteilungen](https://bambouville.com/docs/de/notifications/) 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](https://bambouville.com/docs/de/continuity/#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.
