tmux ein Windowmanager für die Konsole

Die Konsole, die Manche auch als Kommandofenster oder Shell bezeichnen, ist für die Einen der furchtbar langweiligste und komplizierteste Weg irgendwas am System zu verändern. Für die Anderen ist es der Weg der ultimativen Macht und Kontrolle über ein System.

Standardmäßig öffnet man genau 1 Konsole und kann dort Befehle absetzt, Scripte starten oder Programme wie SSH starten und Verbindungen zu anderen Servern aufmachen. Braucht man mehr als nur eine Konsole, dann könnte man weitere Konsolen starten.

Nun gibt es aber Anwendungsszenarien, bei denen man mehrere Dinge parallel machen und sie auch im Auge behalten, oder nur 1 SSH Verbindung zu einem anderen Computer aufmachen möchte, dort aber ebenfalls mehrere Sessions mit z.B. unterschiedlichen Benutzern gleichzeitig starten, oder nicht jedes Mal warten müssen, bis ein Programm seine Arbeit erledigt hat, bevor man weiter machen kann. Und man möchte sich nicht für jede Aufgabe neu einloggen, wo man doch schon eigentlich eingeloggt ist. Hier kommt tmux ins Spiel.

Tmux ist ein sogenannter Terminal Multiplexer. Salopp ausgedrückt: Es vervielfältigt die aktuelle Konsole um weitere virtuelle Konsolen (Prozesse). Also aus einer einzigen Konsole werden viele Konsolen gemacht. Wenn man möchte.

  1. So gibt es zwei hauptsächliche Anwendungsszenarien. Die beide natürlich parallel nutzbar sind:
    1. Einerseits kannt man die (Text) Konsole in verschiedene Bereiche aufteilen, wie wenn man Fenster auf einem grafischen Desktop nebeneinander und untereinander anordnet.
    2. vertikale Aufteilung Strg+b+%
    3. horizontale Aufteilung Strg+b+"
    4. Wechseln zwischen den Fenstern Strg+b+<Pfeiltasten>
  2. Andererseits kann man Konsolen (Sessions) hintereinander stapeln, so dass man immer nur eine Konsole zur Zeit sieht
    1. Neue Session (Vollbildfenster) erstellen Strg+b+c
    2. Wechsel zwischen den Sessions Strg+b+<Nummer> , beginnt mit 0,1,2,3


Alle diese Fenster kann man mit Strg+d oder einfach mit der Eingabe von exit wieder schliessen.

Will man tmux aber nicht schliessen, sondern sich z.B. von einem Server ausloggen, dort aber alle tmux Sessions offen halten, weil ein Prozess dort noch länger läuft, oder man mehrere Fenster angeordnet hat und Prozesse monitored, so kann man

  1. tmux einfach im Hintergrund weiterlaufen lassen mit Strg+b+d   (detach)
  2. später die Session wieder aufnehmen indem man in der Konsole tippt: tmux a      (attach)

Der Vorteil von tmux ist hier ganz klar, dass man nicht nur eine Session vervielfachen kann, sondern auch, dass bei einem Verbindungsabbruch, die Scripte und Programm, die man gestartet hat unbehelligt auf dem entfernten Server weiter laufen. Sobald man wieder Netz hat, verbindet man sich wieder mit dem Server und holt sich die Session mit tmux a (attach) wieder zurück.

Man sollte dabei im Hinterkopf behalten, dass tmux immer mit dem Benutzer und dessen Rechten neue Sessions aufmacht, mit der tmux gestartet wurde. Braucht man also z.B. viele root Sessions, so sollte man erst zum Benutzer root wechseln, bevor man tmux startet.

Tmux kann noch wesentlich mehr, inklusive einem Theming, wenn man die Farben und die Statuszeile anpassen möchte, oder alle Tasten komplett umkonfigurieren usw. Sehr gute Einstiegsseiten, um mehr darüber zu erfahren sind

  1. Ubuntuusers Wiki https://wiki.ubuntuusers.de/tmux/
  2. Tmux Entwickler Seite https://github.com/tmux/tmux/wiki

Meine persönliche .tmux.conf in meinem Benutzerverzeichnis /home/Benutzer/ sieht momentan so aus

### DESIGN CHANGES ###
######################

# loud or quiet?
set -g visual-activity off
set -g visual-bell off
set -g visual-silence off
setw -g monitor-activity off
set -g bell-action none

# modes
setw -g clock-mode-colour colour25
setw -g mode-style 'fg=colour255 bg=colour25 bold'

# panes
set -g pane-border-style 'fg=colour19 bg=colour0'
set -g pane-active-border-style 'bg=colour0 fg=colour9'

# statusbar
set -g status-position bottom
set -g status-justify left
set -g status-style 'bg=colour25 fg=colour255'
set -g status-left ' #[bg=colour25,fg=colour255]'
set -g status-right '#[fg=colour255,bg=colour25] %d/%m/%Y #[fg=colour255,bg=colour25] %H:%M '
set -g status-right-length 50
set -g status-left-length 20

setw -g window-status-current-style 'fg=colour15 bg=colour31 bold'
setw -g window-status-current-format '#I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]#F'

setw -g window-status-style 'fg=colour0 bg=colour25 bold'
setw -g window-status-format '#I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F'

setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'

# messages
set -g message-style 'fg=colour232 bg=colour16 bold'