This Page

diese seite ist eine vorbereitung fuer ein paar vortraege bei der c-base.

Vortragende:

(1) Einfuehrung von GNU screen
(2) Einfuehrung von tmux
(3) Workshop zu tmux

related tools:

Colors

256 colors. depends on surrounding

Window Title

defaut title: first process

Window Number

es geht.

Command Line

key binding tab completion of command names and options

scripting: sequences? branches/conditional!

Copy+Paste

default key bindings a la emacs no incremental search though

buffer list

Misc

synchronize panes: ...

sinnvolle defaults statuszeilen CTRL-B als command key (entwicklung innerhalb screens mit CTRL-A als command key) mehrfaches splitting (hor+vert), persistent ueber detach+reattach sharing of windows between sessions

- Sessions = spezialfall: sessions mit teilmenge einer anderen session permissions: nur fuer einen ganze session

Window Splitting

screen: a split is for all windows tmux: splits are per window (panes)

window numbers and clock in ascii

farben

Development

BSD license OpenBSD -> CVS

Communication

chat, mail, wiki sourceforge

Tmux-Vortrag

Anselms Notizen zum tmux-Vortrag auf dem Linuxtag 2010.

Was ist tmux?

Tmux ist ein "Terminal-MUltipleXer" wie GNU screen.

Was ist ein Terminal-Multiplexer?

Ein Terminal-Multiplexer ist ein Terminalprogramm (vergleiche z.B. gnome-terminal), das selbst in einem Terminal laeuft. Man findet teilweise Features, wie sie auch in konventionellen Terminalprogrammen vorhanden sind:

Im Unterschied zu den gaengigen Terminalprogrammen

Was ist der Unterschied zwischen tmux und GNU screen?

Screen unterstuetzt mehr (obskure) Terminals, kann ohne Hilfsprogramme via telnet und die serielle Schnittstelle kommunizieren. Gemeinsames Arbeiten in derselben Screen-Sitzung wird besser unterstuetzt (ACLs).

Features von tmux

Allgemeine Struktur

Server  => hat (mehrere) "Sessions"
Session => hat (mehrere) "Windows"
Window  => hat (mehrere) "Panes"

0:1.2   => Session 0, Window 1, Pane 2

Panes

Skripte

Befehle lassen sich ueber die interaktive Eingabezeile (C-b :, bietet TAB-Vervollstaendigung) oder ueber das tmux-Kommando absetzen, Beispiele:

tmux new-window -d htop              # oeffnet htop in einem neuen Fenster, dieses wird nicht automatisch selektiert
tmux send-keys -t :3 q               # schickt das Zeichen "q" an das Fenster mit der Nummer 3 (koennte z.B. htop beenden)
tmux new-window                      # oeffnet ein neues Fenster mit einer Shell und selektiert es
tmux send-keys -t :3 "echo foo" C-m  # auch Steuerzeichen koennen mit send-keys gesendet werden

Durch die folgenden Kommandos werden zuerst drei vim-Instanzen mit drei verschiedenen Dateien in drei Panes im neuen Fenster "3" geoeffnet. Danach wird das Layout angepasst und ein Modus aktiviert, in dem alle Tastendruecke an alle Panes weitergeleitet werden.

tmux new-window   -d -t :3 "vim foo.txt"
tmux split-window -d -t :3 "vim bar.txt"
tmux split-window -d -t :3 "vim baz.txt"
tmux select-layout -t :3 even-vertical
tmux set-window-option synchronize-panes on

Hier ein Beispiel, wie man diese Funktionalitaet als Shellfunktion umsetzen koennte:

multivim() { 
  tmux new-window "vim $1"
  shift
  for file in "$@"; do
    tmux split-window "vim $file"
  done
  tmux select-layout even-vertical
  tmux set-window-option synchronize-panes on
}

Buffer

C-b [ geht (wie in screen) in den Copy-Modus, der, anders als bei screen, standardmaessig Emacs-Keybindungs unterstuetzt. Anders als bei screen gibt es mehrere "paste buffer".

tmux capture-pane  # speichert den sichtbaren Bildschirminhalt in einen Buffer
tmux list-buffers  # zeigt alle vorhandenen Buffer, reisst den Inhalt an
tmux show-buffer   # schreibt den Inhalt eines Buffers an die Standardausgabe
tmux load-buffer   # liest den Inhalt einer Datei in einen Buffer
tmux save-buffer   # schreibt einen Buffer in eine Datei

Weitere Funktionen

C-b w (choose-window)  # grafische Fensterliste
C-b q (display-panes)  # Panes koennen per Ziffer angewaehlt werden

Die Fenstergroesse wird, wenn noetig, verkleinert. Eine Session kann man mehrmals offen haben oder ein Fenster auf verschiedenen Sessions betrachten (innerhalb desselben Servers).

Tmux in Ubuntu

Tmux ist seit karmic koala (9.10) in "universe", aktuell ist Version 1.1 (vom 2010-11-05) in lucid lynx (10.04) verfuegbar. Die aktuelle stabile Version von tmux ist 1.2 (vom 2010-03-10). Es ist auch nicht schwer, tmux aus den Quellen zu bauen, die Entwicklung findet in CVS statt, die einzigen Abhaengigkeiten sind libevent und ncurses.

EOF

tmux (zuletzt geändert am 2010-08-01 20:06:28 durch AnselmHelbig)