Mehr Fenster

Viele Sitzungen in einem Terminal verwalten mit Tmux

Shell-Kommandos und Programme für die Textkonsole sind weder altmodisch, noch lediglich für Nerds und Hacker [1] interessant. Diese Tools bevölkern seit Langem so erfolgreich die Linux-Welt, weil sie meist flinker und effizienter arbeiten als ihre schwergewichtigen Verwandten mit grafischer Oberfläche – sei es, dass der Midnight Commander als Dateimanager über eine SSH-Verbindung zum Einsatz kommt, der Texteditor Vim beim Schreiben einer Datei oder der Mailclient Mutt zum lesen elektronischer Post.

Um alle diese Konsolenprogramme unter einen Hut zu bringen und zig quer über den Desktop verstreute Xterms zu vermeiden, kamen über die Jahre sogenannte Terminal-Multiplexer zum Zug. Eines der Urgesteine dieser Fenstermanager für die Textkonsole ist Screen [2].

Nun wächst sich die Konfiguration von Screen angesichts der vielen Optionen und Variablen tatsächlich zu einer wirklich nerdigen Puzzlearbeit aus. Und so trat 2007 das Tmux-Projekt auf den Plan, um Anwendern, die nicht nächtelang über Konfigurationsdateien brüten möchten, einen gleichermaßen mächtigen wie leichtgängigen Terminal-Multiplexer zur Verfügung zu stellen.

Im WWW

Auf der Website des Projekts [3] finden Sie den Download-Link zur aktuellen Programmversion. Mit etwas Glück stellt jedoch die Distribution Ihrer Wahl ein fertig kompiliertes und angepasstes Paket über das Software-Repository bereit. Dieses installieren Sie dann über Bordmittel wie Apt-get, Yum oder das Ubuntu Software-Center.

Hält die verwendete Distribution kein Tmux-Paket parat, gilt es das Programm aus dem Quelltext zu übersetzen. Im Kasten "Installation" finden Sie eine Anleitung, wie Sie dazu vorgehen.

Nach der Installation ist der Multiplexer bereit zum Start. Ist Ihnen die systemweite Installation mit Root-Rechten nicht ganz geheuer, besteht die Möglichkeit, Tmux gefahrlos im Heimatverzeichnis zu installieren. Wie das funktioniert, zeigt ein älterer Artikel, den Sie online [4] sowie in der Rubrik How-to auf der Heft-DVD der Media-Ausgabe finden (Hinweise zum Kompilieren).

Installation

Zunächst entpacken Sie den Tarball mit dem Tmux-Quellcode und wechseln in das neue entstandenen Verzeichnis. Sinnigerweise erledigen Sie das bereits in der Shell, denn dort geschieht auch das Kompilieren und Installieren.

Als nächstes rufen Sie das im Verzeichnis enthaltene Skript namens configure auf. Es prüft, ob das System alle Voraussetzungen erfüllt, um aus dem Quelltext ein ausführbares Programm zu backen. Sie erkennen das an der Meldung checking. Fehlt eine Zutat, sehen Sie das in der Regel und müssen diese aus dem Software-Repository nachinstallieren.

Anschließend starten Sie mit dem Befehl make das Übersetzen des Quelltextes in ein Programm. Schließlich wechseln Sie in den Status des Administrators, um Tmux mit dem Befehl make install in der Verzeichnishierarchie im Pfad unter /usr/local/ zu installieren. Unter Ubuntu verwenden Sie dazu beispielsweise das Kommando sudo. Listing 1 zeigt den kompletten Ablauf.

Listing 1

$ tar xvzf tmux-1.6.tar.gz
$ cd tmux-1.6/
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
[...]
config.status: creating Makefile
config.status: executing depfiles commands
$ make
$ sudo make install

Auf Tuchfühlung

Öffnen Sie nun ein Terminal – etwa Xterm, die KDE-Konsole oder Rxvt – und starten Sie den Tmux mit dem Kommando tmux in der Shell. Das Tool präsentiert sich mit einer aufgeräumten Oberfläche in Form eines Statusbalken im Fuß des Terminals (Abbildung 1). Bevor Sie daran gehen, die Oberfläche mit einigen Handgriffen an Ihre Bedürfnisse anzupassen, schauen Sie sich erst einmal die grundlegende Funktionalität des Programms an.

Abbildung 1

Abbildung 1: Ein Statusbalken samt Reiter für geöffnete Fenster, so präsentiert sich Ihnen Tmux beim ersten Start.

So wie beim Urgestein Screen regeln Sie den größten Teil der Bedienung über Tastenkombinationen, denen Sie immer eine festgelegte Sequenz voranstellen. Bei Screen ist dies [Strg]+[A], bei Tmux hingegen [Strg]+[B]. Sie haben aber die Möglichkeit, diese in der Manpage prefix key genannte Folge über die Konfigurationsdatei zu ändern.

Um sich mit dem neuen Werkzeug vertraut zu machen, öffnen Sie zunächst mit [Strg]+[B],[C] ein neues Fenster. In der Statuszeile sehen Sie, dass Tmux dieses Fenster dort mit einer neuen Nummer anzeigt. Um nun zwischen den Fenstern zu wechseln, drücken Sie die Tasten [Strg]+[B],[N] ("next"), [Strg]+[B],[P] ("previous") oder [Strg]+[B] in Kombination mit den Zahlentasten [**0**] und [**1**] für die entsprechenden Fenster.

Mehr Komfort und Übersicht erhalten Sie aber, wenn Sie ein virtuelles Terminalfenster einfach in mehrere Panels aufsplitten. Um es vertikal aufzuteilen, drücken Sie [Strg]+[B],[Umschalt]+[**5**], wohingegen [Strg]+[B],[Umschalt]+[**2**] die Teilfenster horizontal arrangiert. Abbildung 2 zeigt den möglichen Split eines Fensters in unterschiedlichen Aufteilungen.

Abbildung 2

Abbildung 2: Tmux in vollem Einsatz: Verschiedene Konsolen-Tools arbeiten hier in Panels in einem einzigen Terminal.

Tastaturgesteuert

Damit sind die Möglichkeiten der Tastaturbedienung noch längst nicht ausgereizt: Die Tabelle "Tastaturbefehle" bietet einen kurzen Überblick über die wichtigsten Befehle.

Wie Sie dort sehen, existiert mit [Strg]+[B],[Umschalt]+[.] ein Kommando, um einen programminternen Prompt zu starten. Welche Möglichkeiten das eröffnet, verdeutlicht am einfachsten ein Beispiel: Angenommen, Sie haben in einem Tmux-Fenster gerade verschiedene Panels arrangiert und möchten sich nun daran machen, deren Größe zu verändern.

Das erledigen Sie mit der Funktion resize-pane: Mit dem programminternen Befehl resize-pane -U breitet sich das aktuelle Panel nach oben aus, mit dem Kommando resize-pane -L 10 zehn Zeichen nach links. Analog vergrößert die Funktion resize-pane -t 2 -L 15 das Panel Nummer 2 um 15 Zeichen nach links.

Sie haben die Möglichkeit, die genannten Variablen und alle Weiteren bis ins Detail zu konfigurieren. Sogar den Prefix-Key, also die vorgeschaltete Tastenkombination, passen Sie je nach Bedarf an – etwa, wenn Sie das von Screen gewohnte [Strg]+[A] bevorzugen. Diese Veränderungen nehmen Sie mit einem beliebigen Editor in der Konfigurationsdatei ~/.tmux.conf in Ihrem Heimatverzeichnis vor.

Tastaturbefehle

Tastenkombination Funktion
[Strg]+[B],[**0**] bis [**9**] zwischen den Fenstern 0 bis 9 wählen
[Strg]+[B],[Umschalt]+[ß] die Tastaturbelegung anzeigen
[Strg]+[B],[C] ein neues Fenster öffnen
[Strg]+[B],[F] ein Fenster anhand des Titels suchen (bei mehreren Treffern erhalten Sie eine Auswahl)
[Strg]+[B],[T] Zeit anzeigen
[Strg]+[B],[X] Panel schließen
[Strg]+[B],[Q] Panel-Nummer kurz einblenden (Drücken der entsprechenden Nummern-Taste wechselt den Fokus)
[Strg]+[B],[Leertaste] Panel-Layout wechseln
[Strg]+[B],[N] zum nächsten Fenster wechseln
[Strg]+[B],[P] zum vorigen Fenster wechseln
[Strg]+[B],[Umschalt]+[.] programminternen Prompt öffnen
[Strg]+[B],[Umschalt]+[**2**] Fenster vertikal in zwei Panels aufteilen
[Strg]+[B],[Umschalt]+[**5**] Fenster horizontal in zwei Panels aufteilen
[Strg]+[B],[Umschalt]+[**1**] Panel in ein virtuelles Fenster umwandeln
[Strg]+[B],[Umschalt]+[**6**] aktuelles Fenster beenden
[Strg]+[B],[Strg]+[O] Panel-Inhalt rotieren
[Strg]+[B],[Pfeil**oben] im Uhrzeigersinn durch die Panel rotieren
[Strg]+[B],[Pfeil**unten] gegen den Uhrzeigersinn durch die Panel rotieren
[Strg]+[B],[Strg]+[Pfeiltaste] Panel in die gewählte Richtung vergrößern

Unter der Haube

Tmux bringt in der Regel eine Handvoll Beispieldateien für die Konfiguration mit. Sie finden diese Vorlagen meist im Pfad unter /usr/share/doc/tmux/examples oder /usr/local/share/doc/tmux/examples. Ein einfaches Beispiel wäre das bereits erwähnte Umstellen des Prefix-Keys auf [Strg]+[A]. Öffnen Sie die Konfigurationsdatei und schreiben Sie Folgendes in die ersten zwei Zeilen:

unbind C-b
set -g prefix C-a

Danach speichern Sie die Datei unter dem Namen ~/.tmux.conf und starten Tmux neu. Durch das Kommando unbind C-b haben Sie die vorgeschaltete Tastenkombination [Strg]+[B] aufgehoben. Das C steht hier für die "Control"-Taste, die auf deutschen Tastaturen die Aufschrift "Strg" (Steuerung) trägt. In der Zeile darunter ernennen Sie mit der Option set -g prefix C-a die Kombination [Strg]+[A] zum neuen Prefix-Key ernannt. Die Funktion set -g setzt Optionen global.

Ebenfalls über set treffen Sie Anpassungen für die Statuszeile im Fuße des Multiplexers. Dieses Beispiel verdeutlicht sehr gut, um wie vieles einfacher es Tmux es seinen Benutzern im Gegensatz zu Screen macht: Während die Konfiguration der Statuszeile bei Screen schnell unappetitlichen Dimensionen annimmt (Listing 2) bleibt Tmux bei seinen Stärken: Klarheit und Übersichtlichkeit (Listing 3).

Listing 2

hardstatus string "%-Lw%{BW}%50>%n%f* %t%{-}%+Lw%<"
caption always "%{Wk} %42`%-=%{+b gw} %45` %{-b Wk} %D, %d.%m. %c:%s "

Listing 3

set -g status-interval 1
set -g status-fg blue
set -g status-bg white
set -g status-right "%d.%m. %H:%M:%S"

Die Bedeutung der Zeilen der Tmux-Einstellungen sind schnell erklärt, ja beinahe selbsterklärend: Der Parameter status-interval aktualisiert die Statusleiste jede Sekunde. Das ist sinnvoll, wenn Sie sich im rechten Bereich der Leiste die Uhrzeit einschließlich der Sekunden anzeigen möchten, wie in unserem Beispiel mit status-right "%d.%m. %H:%M:%S". Die Angaben status-fg blue und status-bg white färben den Vordergrund der Statuszeile blau und deren Hintergrund weiß.

Auf diese Weise versehen Sie auch die Rahmen der Panels und die Reiter der einzelnen Fenster mit unterschiedlichen Farben. Statt set leiten Sie die Variablen dieses Mal mit set-window-option ein (Listing 4).

Listing 4

set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg blue
set-window-option -g window-status-fg default
set-window-option -g window-status-bg yellow

Die Option aus Zeile 1 weist Tmux an, den Vordergrund des Reiters des aktuell geöffneten Fensters weiß anzuzeigen, der Hintergrund bekommt durch die nachfolgende Zeile im Beispiel eine blaue Farbe. Für die restlichen Fenster in der Statusleiste wird umgekehrt ein Schuh daraus: Der Vordergrund hat durch die Einstellung window-status-fg default die selbe Farbe, wie die Voreinstellung der Statuszeile, nämlich Blau, der Hintergrund leuchtet dank window-status-bg yellow in Gelb.

Ein weiterer Punkt betrifft weniger die Ästhetik, sondern mehr die Ergonomie: In Listing 5 erhält das aktive Panel, in dem Sie gerade arbeiten, einen Rahmen mit grünem Vordergrund (Zeile 1) und einem schwarzen Hintergrund (Zeile 2). Die restlichen inaktiven Panels erscheinen weiß auf blauem Grund (Zeile 3 und 4).

Listing 5

set-option -g pane-active-border-fg green
set-option -g pane-active-border-bg black
set-option -g pane-border-fg white
set-option -g pane-border-bg blue

Beachten Sie aber, dass diese Optionen erst ab Tmux 1.2 bereit stehen. Setzen Sie zum Beispiel unter Ubuntu 10.04 LTS die Version aus dem Repository ein, dann arbeiten Sie mit Tmux 1.1, das diese Parameter nicht kennt.

Wie Sie während Ihres ersten Tmux-Tests vielleicht festgestellt haben, verzieren sich die Reiter der Fenster hin und wieder mit Zeichen wie dem Asterisk (*), einem Hash (#) oder dem Ausrufezeichen (!). Diese Symbole dienen als Signale und Orientierungen. Die Tabelle "Fenstermarkierungen" schlüsselt deren Bedeutungen auf.

Fenstermarkierungen

Symbol Bedeutung
* markiert das aktuelle Fenster
- markiert das zuletzt ausgewählte Fenster
# im überwachten Fenster trat eine Aktivität auf
! visueller Ersatz für die Systemglocke
+ Fensterinhalt erfolgreich überwacht

Neben diesen ganz einfachen Basiskonfigurationen haben Sie jedoch die Möglichkeit, sich nach Herzenslust in der Datei ~/.tmux.conf austoben. Wenn Sie öfter eine SSH-Verbindung [5] zu einem bestimmten Rechner aufbauen, dann lohnt sich beispielsweise eine Konfiguration wie in Listing 6.

Listing 6

$ bind / split-window "exec ssh Benutzer@Server"

Die Option bind funktioniert als Gegenstück zu unbind, das Sie im ersten Beispiel bereits kennen gelernt haben. Mit bind verketten Sie den Schrägstrich ([Umschalt]+[**7**]) mit dem gewünschten Kommando. Dabei gibt es einige Besonderheiten zu beachten: Der Parameter split-window teilt das aktuelle Fenster in zwei Panels und führt durch exec ("execute") das Programm SSH samt dem dafür benötigten Benutzer- und Servernamen aus. Alles, was für Sie nun noch zu tun bleibt, ist das Eintippen des Passworts in die SSH-Eingabeaufforderung – schon haben Sie Verbindung zum entfernten Rechner.

Fazit

Die beschriebenen Parametern reizen die Möglichkeiten von Tmux bei weitem nicht aus: Neben den bereits genannten Vorlagen zur Konfiguration bietet das Tool außerdem eine über 1000 Zeilen umfassende Manpage an, die Sie in der Shell mit dem Kommando man tmux einsehen.

Zwar gibt es das Manual nur in Englisch, doch macht es dieses Manko durch viele eingängige Beispiele wett. Wenn Sie sich des Englischen ausreichend mächtig fühlen, steht zudem der Teilnahme an den Mailinglisten und dem IRC-Channel #tmux nichts im Weg. Diese unterhält das das Tmux-Team als Support. 

Infos

[1] Hacken wie ein (Kino-)Hacker: http://hackertyper.com

[2] GNU Screen: http://www.gnu.org/software/screen/

[3] Tmux: http://tmux.sourceforge.net

[4] Programme selber kompilieren: Andreas Kneib, "Auf zu den Quellen", LU 07/2005, S. 86, http://www.linux-community.de/8607

[5] Tunnelbauer: Jörg Harmuth, "Verbindungskünstler", LU 04/2006, S. 78, http://www.linux-community.de/10335

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare