Mit tmux kann man wie mit screen mehrere Terminalfenster innerhalb einer Konsole verwalten.
Tmux hat jedoch ein paar Vorteile gegenüber dem Klassiker screen.
Vorteile von tmux gegenüber screen
- Fenster können auch vertikal gesplittet werden
- Visuelle Benachrichtigung bei Aktivitäten aus anderem Fenster
- Mehr Konfigurationsoptionen
- Einfachere Konfiguration als (vgl. hardstatusstring von screen)
- Innerhalt tmux kann man zwischen mehreren Sessions wechseln (Client-Server Prinzip)
- Gut Skriptbar (von der Shell aus)
- Mehrere Buffer für Kopieren/Einfügen
- Fensternamen passen sich dynamisch den aufgerufenen Programmen an
- Fenster können verschoben und vertauscht awerden
- Konfiguration während dem laufenden Betrieb ändern und neu laden
- Programme wie less, welche normalerweise die Konsole wieder leeren, werden auch geleert
- Noch aktiv unter Entwicklung
Konfiguration
Tmux wird mit der Konfigurationsdatei ~/.tmux.conf konfiguriert.
Standardmässig nutzt tmux die Tastenkombination Ctrl-B als Meta-Key.
Da ich Ctrl-B oft in vi und in less zum zurückblättern verwende,
ist diese Tastenkombination nicht sehr ideal für mich. Deshalb wechselte ich den Meta-Key
wieder zu Ctrl-A, wie ich es von screen her kenne:
unbind C-b
set -g prefix C-a
bind-key C-a last-window
bind-key a send-prefix
Nett von tmux finde ich, dass die Fenstertitel dynamisch den gestarteten Programmen
angepasst werden können:
setw -g monitor-activity on
set -g visual-activity on
Die Statusbar (Leiste ganz unten an der Konsole) kann wie folgt konfiguriert werden:
set -g pane-border-fg white
set -g pane-active-border-fg white
# Statusbar
set -g status-bg white
set -g status-fg black
set -g status-interval 30
setw -g window-status-current-attr reverse
set -g status-right-length 55
set -g status-right "| #(whoami)@#H | #(awk '{print $1,$2,$3}' /proc/loadavg) | %Y-%m-%d %H:%M "
Image may be NSFW.
Clik here to view.
Für das Splitten von Fenstern habe ich mir auch zusätzliche Tastenkombinationen eingerichtet.
Mit Ctrl-a | kann ich nun Fenster vertikal und mit Ctrl-a - horizontal splitten.
bind-key | split-window -h
bind-key - split-window -v
Mit den vi-ähnlichen Keybindings kann man ganz einfach zwischen den gesplitteten Fenster wechseln:
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
Meine Konfigurationsdatei für tmux
Schlussendlich sieht meine Konfigurationsdatei so aus:
#
# ~/.tmux.conf
# Konfigurationsdatei für tmux
#
########################################################################
########################################################################
# Allgemein
# History
set -g history-limit 1000000
# 265 Farben
set -g default-terminal "screen-256color"
# Set window notifications
setw -g monitor-activity on
set -g visual-activity on
# Copymode: vi
set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
########################################################################
# Aussehen
# Panes
set -g pane-border-fg white
set -g pane-active-border-fg white
# Statusbar
set -g status-bg white
set -g status-fg black
set -g status-interval 30
setw -g window-status-current-attr reverse
set -g status-right-length 55
set -g status-right "| #(whoami)@#H | #(awk '{print $1,$2,$3}' /proc/loadavg) | %Y-%m-%d %H:%M "
########################################################################
# Keybindings
# C-a statt C-b als Meta-Key
unbind C-b
set -g prefix C-a
bind-key C-a last-window
bind-key a send-prefix
# Panel splitter
bind-key | split-window -h
bind-key - split-window -v
# Mit hjkl durch Panels wechseln
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Konfigurationsdatei dynamisch laden
unbind r
bind r source-file ~/.tmux.conf
# EOF
Benutzung
Kennt man screen, ist man recht schnell mit der Bedienung von tmux vertraut:
- C-a c Neues Fenster erzeugen
- C-a n Zu Fenster n gehen (n = 1 bis 9)
- C-a C-a Zurück zum vorher ausgewählten Fenster
- C-a ? Hilfe anzeigen
- C-a a Sendet Ctrl-A
- C-a d Sitzung detachen (wieder attachen mit $ tmux attach
Ein paar Tastenkombinationen sind anders:
- C-a x Fenster killen
- C-a , Dem aktuellen Fenster einen Titel geben
Neue Funktionen sind z. B. folgende (basierend auf meiner Konfigurationsdatei von oben):
- C-a | Fenster vertikal splitten
- C-a - Fenster horizontal splitten
- C-a h In gesplittetes Fenster links wechseln (genau so mit jkl)
- C-a q Gesplittete Fenster durchnummerieren und auswählen
- C-a Space Layout der gesplitteten Fenster wechseln (erinnert an Tiling-Windowmanager)
- C-a s Laufende Sessions anzeigen und wechseln
- C-a r Konfiguration neu laden
Texte können so kopiert werden (Vorzeitiges Abbrechen mit q):
- C-a [ In vi-Kopiermodus wechseln
- hjkl Navigieren
- v Auswahl beginnen
- y Auswahl kopieren
- C-a ] Auswahl einfügen
Viele weitere Funktionen sind in der Manpage beschrieben.
Links und weitere Informationen
- Projektseite von tmux: http://tmux.sourceforge.net/
- Manpage von tmux: http://www.openbsd.org/cgi-bin/man.cgi?query=tmux&sektion=1