[[Vorlage(Getestet, quantal, precise pangolin, oneiric, lucid)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [http://tmux.sourceforge.net/ tmux] {en} ist ein sog. Terminal-Multiplexer (vergleichbar mit [:Screen:screen]) für die Konsole. tmux ermöglicht es, innerhalb eines Terminals[2] 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 * Farbliche Darstellung mittels ncurses * Horizontales/vertikales Splitten 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/oder Befehlen/Aliase * Tastaturbelegung frei wählbar * Gut dokumentierte Befehlsschnittstelle (manpage) * Anpassbar über die '''tmux.conf''' oder zur Laufzeit * Über Skripte steuerbar = Installation = tmux ist in den Paketquellen enthalten und kann mit {{{#!vorlage Paketinstallation tmux, universe }}} installiert[1] werden. = Bedienung = tmux wird über ein normales Terminal[2] gestartet: {{{#!vorlage Befehl tmux }}} Sollte kein Server gestartet sein, wird dieser automatisch mitgestartet. tmux kennt eine Reihe von Aufrufoptionen die in der [:man: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: {{{#!vorlage Befehl 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]: {{{#!code bash #!/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 }}} Beispiel für eine '''tmux.conf''': {{{#!code bash setw -g mode-mouse on set-option -g set-clipboard on 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 }}} = Beispiele = Auflisten aller aktuell laufenden tmux-Sitzungen {{{#!vorlage Befehl tmux ls }}} Neue tmux-Sitzung mit dem Namen "hans" starten. {{{#!vorlage Befehl tmux new -s hans }}} Verbinden zur bestehenden Sitzung mit dem Namen "hans" {{{#!vorlage Befehl tmux attach -t hans }}} Beendet tmux Server und Clients und zerstört alle Sessions {{{#!vorlage Befehl tmux kill-server }}} = Kurztasten = Das Programm kann ausschließlich über Kurztasten (Shortcuts) bedient werden. Die Kommandosequenz wird standardmäßig mit [[Vorlage (Tasten Strg+B)]] eingeleitet und die folgende Eingabe wird als weiteres Kürzel interpretiert. {{{#!vorlage Tabelle <-2 tablestyle="width: 90%;" rowclass="titel"> Einige ausgewählte Tastaturkürzel (Shortcuts) +++ Tastaturkürzel Bedeutung +++ [[Vorlage(Tasten, ?)]] Anzeige aller aktiven Shortcuts (keybindings). +++ [[Vorlage (Tasten, d)]] (detach) Ausklinken/aushängen der akt. Sitzung (Client) und in den Hintergrund verschieben, +++ [[Vorlage (Tasten, s)]] (switch) Wechseln zwischen verschiedenen Sitzungen (Client). +++ [[Vorlage (Tasten, c)]] (create) Erzeugen eines neuen Fensters (Shell), +++ [[Vorlage (Tasten, &)]] Beenden der aktuellen Fensters, muss mit `y` bestätigt werden. +++ [[Vorlage (Tasten, ",")]] Umbenennen des aktuellen Fenstertitels +++ [[Vorlage (Tasten, l)]] (last) Wechseln zum letzten aktiven Fenster (ist durch - markiert) +++ [[Vorlage (Tasten, p)]] (previous) Wechsel zum vorherigen Fenster (z.B. von 3 nach 2). +++ [[Vorlage (Tasten, n)]] (next) Wechsel zum nächsten Fenster. +++ [[Vorlage (Tasten, 1)]] etc. Wechsel zur Fenster-Nr. +++ [[Vorlage (Tasten, doublequote)]] Aktuelles Pane horizontal teilen (erzeugt weiteres Pane) +++ [[Vorlage (Tasten, %)]] Aktuelles Pane vertikal teilen (erzeugt weiteres Pane) +++ [[Vorlage (Tasten, w)]] Liste der Fenster anzeigen. Fenster wechseln. +++ [[Vorlage (Tasten runter)]]/[[Vorlage (Tasten hoch)]] Ins vorherige/nächste Pane wechseln +++ [[Vorlage (Tasten Leertaste)]] Wechsel zwischen verschiedenen Aufteilungen der Panes +++ [[Vorlage (Tasten, !)]] Das aktuelle Pane aus dem Fenster lösen und ein neues Fenster mit diesem Pane erstellen. }}} = X11 Selektion = Unter [#Quellen a)] wird eine einfache Methode beschrieben, tmux mit der X11 Selektion zusammenarbeiten zu lassen. Dazu benötigt man xclip, das über {{{#!vorlage Paketinstallation xclip, universe }}} installiert[1] werden kann. Die nötigen Ergänzungen der .tmux.conf {{{#!code bash # 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 [[Vorlage (Tasten, Strg+B)]]) folgende hinzu: {{{#!vorlage Tabelle <-2 tablestyle="width: 90%;" rowclass="titel"> X11 primary selection (Shortcuts) +++ Tastaturkürzel Bedeutung +++ [[Vorlage (Tasten, Strg+c)]] den aktuellen tmux paste-buffer in die X11 primary selection schreiben. +++ [[Vorlage (Tasten, Strg+v)]] den Inhalt der X11 primary selection in den tmux paste-buffer übernehmen. }}} Das funktioniert so nicht in entfernten tmux-Sitzungen (e.g. per ssh mit X11-Forwarding); dann muss die DISPLAY-Variable in den tmux-panes explizit gesetzt werden. = Links = * [http://tmux.sourceforge.net/ Projektseite von tmux] {en} mit Beispielen und ausführlicher Dokumentation. = Quellen = a) [http://www.joocom.de/blog/screen-auf-steroiden-tmux/ screen auf Steroiden: tmux] {de} #tag: shell