tmux
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
tmux 🇬🇧 ist ein Terminal-Multiplexer für die Kommandozeile, vergleichbar mit screen oder Terminator. tmux ermöglicht es, innerhalb eines Terminals oder einer Terminalemulation verschiedene virtuelle Konsolensitzungen zu erzeugen und zu verwalten. Sitzungen können getrennt ("detach") und später weitergeführt werden ("attach"). Mit tmux ist es möglich, Konfigurationen für unterschiedliche Zwecke zu definieren, sodass man die jeweils gewünschte Umgebung zur Verfügung hat.
Merkmale:
Client-Server Struktur
Darstellung mittels ncurses (und damit für die Konsole geeignet)
Horizontales und vertikales Aufteilen des Fensters
Fenster können frei vergrößert oder verkleinert werden
Statusleiste mit Informationen zu Sitzungen, Fenstern, Programmnamen, Hostname und Datum/Uhrzeit
Copy&Paste zwischen den verschiedenen Anwendungen
Verwaltung mehrerer "paste buffer"
Benennen und Finden von Sitzungen
Steuerung mittels Tastenkombinationen und Befehlen, sowie "Aliasen"
Tastaturbelegung frei wählbar
Gut dokumentierte Befehlsschnittstelle (manpage)
Anpassbar über die tmux.conf oder zur Laufzeit
Über Skripte steuerbar
Installation¶
tmux ist in den offiziellen Paketquellen enthalten und kann über das folgende Paket installiert werden [1]:
tmux (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install tmux
Oder mit apturl installieren, Link: apt://tmux
Bedienung¶
Start und Konfiguration¶
tmux wird über ein normales Terminal [2] gestartet:
tmux
Sollte kein Server gestartet sein, wird dieser automatisch mitgestartet. tmux kennt eine Reihe von Aufrufoptionen, die in der Manpage sehr gut beschrieben sind. Zum Starten von tmux mit Unterstützung für 256 Farben im Terminal und eigener Konfigurationsdatei wird z.B. folgender Befehl genutzt:
tmux -2 -f tmux.conf
Alternativ kann tmux mit einem Bash-Script (z.B. tmux.sh) gestartet werden, in der die jeweilige tmux.conf eingebunden wird[3]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/bin/bash SESSION=main tmux="tmux -2 -f tmux.conf" # if the session is already running, just attach to it. $tmux has-session -t $SESSION if [ $? -eq 0 ]; then echo "Session $SESSION already exists. Attaching." sleep 1 $tmux attach -t $SESSION exit 0; fi # create a new session, named $SESSION, and detach from it $tmux new-session -d -s $SESSION $tmux new-window -t $SESSION:0 $tmux split-window -h -t $SESSION:0 $tmux new-window -t $SESSION:1 $tmux new-window -t $SESSION:2 $tmux new-window -t $SESSION:3 $tmux split-window -h -t $SESSION:3 $tmux new-window -t $SESSION:4 $tmux select-window -t $SESSION:0 $tmux attach -t $SESSION |
Beispiele der Kommandos¶
Auflisten aller aktuell laufenden tmux-Sitzungen:
tmux ls
Neue tmux-Sitzung mit dem Namen "hans" starten:
tmux new -s hans
Verbinden zur bestehenden Sitzung mit dem Namen "hans":
tmux attach -t hans
Beendet tmux-Server und -Clients und zerstört alle Sitzungen:
tmux kill-server
Beispiele für Konfigurationen¶
Beispiel für eine ~/tmux.conf
set -g history-limit 1000 set -g status-interval 1 set -g status-left '#H#[default]' set -g status-right '#(cut -d ” ” -f 1-4 /proc/loadavg)#[default] #%Y-%m-%d %H:%M:%S#[default]' setw -g monitor-activity on set -g visual-activity on
Beispiel für eine ~/tmux.conf in der die Mausunterstützung ab Ubuntu 16.10 aktiviert wird.
set -g mouse on
Beispiel für eine ~/tmux.conf in der die Mausunterstützung bis Ubuntu 16.04 aktiviert wird.
setw -g mode-mouse on set -g mouse-resize-pane on set -g mouse-select-pane on set -g mouse-select-window on
Diese Kommandos können von
ausserhalb, innerhalb von tmux mit 'tmux <Kommando>,
in der Konfigurationsdatei ~/.tmux.conf
und auch von der Kommando-Zeile (strg + ☺ innerhalb von tmux in einer laufenden Shell angewendet werden.
Kommandos¶
Hier nur ein paar wichtige Kommandos zum warm werden, die volle Anzahl in den man-pages nachlesen.
Die wichtigsten Parameter:
-g globale Einstellung/Auswirkung
-t target - Ziel - zum Teil komplett adressierbar: "0:1.2" : Sitzung 0, Fenster 1, Scheibe 2
-s source - Quelle - adressierbar wie -t
-d detach - im Hintergrund / nicht aktivieren
attach -t <Sitzung>:<Fenster>.<Fensterscheibe> a -t <Sitzung>:<Fenster>.<Fensterscheibe> | Sich mit der Sitzung verbinden / Client mit dem Server verbinden |
set -g Mouse [on/off] show -g Mouse [on/off] | Maus aktivieren/deaktivieren aktueller Wert anzeigen |
set -g display-time <Zeit> show -g display-time <Zeit> | Anzeige-Zeit in 1/1000tel Sekunden der Meldungen aktueller Wert anzeigen |
set -g escape-time <Zeit> show -g escape-time <Zeit> | Prefix-Tastenkombinations-Zeit in 1/1000tel Sekunden aktueller Wert anzeigen |
joinp -s <Quelle> -t <Ziel> join-pane -s <Quelle> -t <Ziel> | Fensterscheibe in ein anderes Fenster bewegen |
linkw -s <Quelle> -t <Ziel> link-window -s <Quelle> -t <Ziel> unlinkw -s <Quelle> -t <Ziel> unlinkw-window -s <Quelle> -t <Ziel> unlink | Verlinkt das Fenster in eine andere Sitzung Hebt eine Verlinkung auf Hebt diese Verlinkung auf |
selectl <Prarameter> select-layout <Prarameter> Parameter: selectl even-horizontal selectl even-vertical selectl main-horizontal selectl main-vertical selectl tiled | Auswahl der Aufteilung der Fensterscheiben gleichgroße horizontale Fensterscheiben gleichgroße vertikale Fensterscheiben die erste Scheiben über die gesamte horizontale Breite die erste Scheiben über die gesamte vertikale Höhe gleichgroße Aufteilung |
swap-pane -D swap-pane -s0 -t1 | Fenterscheibe mit der nächsten vertauschen Fenterscheibe 0 mit Fenterscheibe 1 tauschen |
tmux split-window -v -p50 <Befehl> tmux split-window -h -p50 <Befehl> | Fenster(scheibe) 50% in zwei vertikale/horizontale Scheiben teilen |
rename-session -t <Sitzung> rename -t <Sitzung> | Sitzung umbenennen |
rename-window -t <Fenster> renamew -t <Fenster> | Fenster umbenennen |
kill-server -t <Sitzung> | Sitzung beenden |
kill-session -t <Sitzung> | Sitzung beenden |
kill-window -t <Fenster> | Fenster beenden |
kill-pane -t <Fenterscheibe> | Fenster beenden |
send-keys -t <Fenterscheibe> send -t <Fenterscheibe> | Tasten an die Fensterscheibe senden, auch Kombinationen (C-a) oder Navigationstasten (NPage) |
Tastenkombinationen¶
Die Kommandosequenz wird standardmäßig mit Strg + B eingeleitet, und die folgende Eingabe wird als weiteres Kürzel interpretiert.
Einige ausgewählte Tastaturkürzel (Shortcuts) | |
Tastaturkürzel | Bedeutung |
Allgemein | |
? | Anzeige der aktiven Tastaturkürzel (keybindings) |
Strg + B , : | Kommando-Eingabe siehe tmux (Abschnitt „Kommandos“) |
[ | Scroll-Modus aktivieren, in dem Pfeiltasten zum Scrollen benutzt werden können (beenden: q) |
+ ⇧ | Für den Kopiermodus mit der Maus (mode-mouse ), wenn auch mouse-select-pane und/oder mouse-select-window verwendet werden |
Sitzungen / sessions | |
S | Liste der Sitzungen/Fenster/Scheiben (Client) anzeigen, Sitzungen (Client) wechseln (session) |
D | Trennen der aktuellen Sitzung (Client) und in den Hintergrund verschieben (detach) |
$ | Umbenennen der Sitzung/session |
Fenster / windows | |
C | Erzeugen eines neuen Fensters (create) |
& | Beenden des aktuellen Fensters, muss mit y bestätigt werden |
, | Umbenennen des aktuellen Fenstertitels |
W | Liste der Fenster anzeigen, Fenster wechseln (windows) |
L | (last) Wechseln zum letzten aktiven Fenster (markiert durch - in der Statusleiste und Fensterliste) |
P | (previous) Wechsel zum vorherigen Fenster (z.B. von 3 nach 2) |
N | (next) Wechsel zum nächsten Fenster |
1 etc. | Wechsel zur Fenster-Nr. |
Fensterscheibe / pane (Unterfenster | |
" | Aktuelle Fensterscheibe (pane) horizontal teilen (erzeugt weitere Fensterscheibe) |
% | Aktuelle Fensterscheibe (pane) vertikal teilen (erzeugt weitere Fensterscheibe) |
Q | Fensterscheiben Nummern anzeigen |
X | Aktuelle Fensterscheibe (pane) schließen, muss mit y bestätigt werden |
Die aktive Fensterscheibe (pane) wechseln | |
Alt + | Die aktive Fensterscheibe (pane) in der Größe verändern |
Strg + B Strg + O | durchrotieren der Fensterscheiben / panes (linksherum, gegen d Uhrzeigersinn) |
Wechsel zwischen verschiedenen Aufteilungen der Fensterscheiben (pane) | |
Alt +
1 ... Alt + 5 | Wechsel zur Aufteilung 1: even-horizontal, gleichgroße horizontale Fensterscheibe Wechsel zur Aufteilung 2: even-vertical, gleichgroße vertikale Fensterscheiben Wechsel zur Aufteilung 3: der Fensterscheiben: main-horizontal, die erste über die gesamte Breite Wechsel zur Aufteilung 4 der Fensterscheiben: main-vertical, die erste über die gesamte Höhe Wechsel zur Aufteilung 5: tiled, gleichgroße Aufteilung |
Alt + ↑ + E | aktuelle Fensterscheiben gleichmäßig verteilen |
Strg + B Z | zoomen der aktiven Fensterscheibe/pane (als Vollbild, im gesamten Fenster) |
! | Die aktuelle Fensterscheibe (pane) aus dem Fenster lösen und ein neues Fenster mit dieser Fensterscheibe erstellen |
X11-Selektion¶
Im Artikel screen auf Steroiden: tmux 🇩🇪 wird eine einfache Methode beschrieben, tmux mit der X11-Selektion zusammenarbeiten zu lassen. Dazu benötigt man xclip. Die nötigen Ergänzungen der ~/tmux.conf:
# damit xclip lokal arbeiten kann set-environment -g DISPLAY :0.0 # paste-buffer in die X11 selection bind C-c run "tmux show-buffer | xclip -i -selection primary" # X11 selection in den tmux paste-buffer bind C-v run "tmux set-buffer -- \"$(xclip -o -selection primary)\"; tmux paste-buffer"
Das fügt zu den tmux-Tastaturkommandos (Prefix Strg + B ) folgende hinzu:
X11 primary selection (Shortcuts) | |
Tastaturkürzel | Bedeutung |
Strg + C | aktuellen tmux paste-Puffer in die "X11 primary selection" schreiben |
Strg + V | Inhalt der "X11 primary selection" in den tmux-paste-Puffer übernehmen |
Das funktioniert so nicht in entfernten tmux-Sitzungen (z.B. per SSH mit X11-forwarding). Dann muss die DISPLAY-Variable in den tmux-panes explizit gesetzt werden.
Links¶
Projektseite 🇬🇧 mit Beispielen und ausführlicher Dokumentation
Manpage 🇬🇧
tmux mit Byobu nutzen 🇩🇪 - Artikel Pro-Linux, 01/2015
tmux – Das Kung-Fu der Terminal-Ninjas 🇩🇪 - Artikel Pro-Linux, 06/2014 (Reprint aus freiesMagazin 🇩🇪, 05/2014)
Terminal (Abschnitt „Weitere-Terminalprogramme“) Programmübersicht
M.Leyrer: Warum ein schwarzes Fenster am Bildschirm reicht (media.ccc.de) (Video/Vortrag) 🇩🇪
Der Terminal-Multiplexer tmux Konfiguration, Beispielkonfiguration 🇩🇪