* Terminalmultiplexer ähnlich screen
* kann ein Terminal in mehrere Bereiche aufteilen
* Sessions verwalten
* man kann sich von einer Session disconnecten und später wieder verbinden
* alle Prozesse laufen die ganze Zeit weiter
* die Aufteilung des Fensters bleibt erhalten
* mehrere Terminals können mit einer Session gleichzeitig verbunden sein
* es ist also möglich zum Beispiel von mehreren Computern gleichzeitig im gleichen Terminal zu tippen
* frei im Terminalbuffer scrollen und kopieren
* der erste tmux-Prozess startet den tmux-Daemon
* deswegen werden Änderungen an der Konfiguration auch nicht geladen wenn man erneut tmux öffnet
====== Terminologie/Organisation ======
* Session
* läuft unabhängig davon ob ein Terminal mit ihr Verbunden ist oder nicht
* läuft auch weiter wenn man sich detached
* kann mehrere Fenster enthalten
* Fenster - der Bereich den man zu einem Zeitpunkt sieht
* kann mehrere Panels enthalten
* Panels - Unterbereiche in denen eigenständige Shells laufen
====== Konfiguration ======
* liegt (für Benutzer) in ~/.tmux
===== Prefix-Key =====
* die meisten Kommandos werden als Key-Chord ausgeführt
* Ctrl + Zeichen Zeichen
* Ctrl + b : -> geht in den Kommandomodus; Ctrl + B wäre der Prefix-Key und muss zusammengedrückt werden, danach wird ":" einzeln gedrückt
Kann geändert werden durch:
set -g prefix C-a
bind C-a send-prefix
* in diesem Fall auf Ctrl+a
* C steht für Ctrl
===== Navigieren im Terminal-Puffer =====
* man kann im Puffer des Terminals navigieren (gemeint ist hier nicht die Command-History)
* Copy-Mode
* per Default kommt man per Prefix + [ in diesen Modus und kann ihn per Prefix + [ verlassen
* per Default sind die Key-Bindings in diesem Modus Emacs-Bindings
* letzteres lässt sich ändern durch:
set-window-option -g mode-keys vi
===== Kopieren vom Terminal-Puffer in X-Clipboard ======
* kann genutzt werden wenn man im Copy-Mode ist um Text an die X-Server-Zwischenablage zu senden
* per Default wird versucht das über eine Terminal-Befehlssequenz zu machen, aber nicht alle Terminals können das -> diese Sektion beschreibt wie es mit alles funktionieren sollte
* funktioniert nur auf Systemen wo ein X-Server läuft (bei Wayland müsste man andere Befehle nutzen)
Foglendes funktioniert wenn vi-Keybindings aktiviert sind (standarmäßig sind emacs-Keybindings aktiviert) - vim wird per:
set-window-option -g mode-keys vi
gesetzt.
# Deaktiviert die Terminal-Command-Sequenz-Methode
set-option -s set-clipboard off
# Drücken von v aktiviert den Visual-Mode zum kopieren
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X rectangle-toggle
# Enfernen des Bindings (falls es schon belegt sein sollte) für Enter
unbind -T copy-mode-vi Enter
# Enter sendet den kopierten Text an xclip (-se -> an welche "selection" -> c = clipboard; -i -> In -> sende es an, nicht lese von)
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel 'xclip -se c -i'
# Das gleiche noch mal für die Maus
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip -se c -i'
# Binde (außerhalb des Copy-Mode) P (groß P) an Einfügen des Puffers
bind P paste-buffer
* wenn man dann Prefix-Key + [ drückt -> Copy-Mode kann man im Terminal-Puffer sich frei bewegen
* per "v" kommt man in den Visual-Mode wie man ihn von vim kennt
* drückt man Enter verlässt man den Copy-Mode und der markierte Inhalt wird an xclip/das X-Clipboard gesendet und kann von allen Programmen genutzt werden
* per Prefix-Key + P kann man einfügen
* allerdings funktioniert das nicht vom Clipboard (also nicht von anderen Andwendungen) ins Terminal, sondern nur mit Inhalt der bereits im Terminal kopiert wurde