Tmux en Debian Lenny 5.0

Tmux es el reemplazo natural de screen. No sé si afirmar esto me traerá algún que otro disgusto, pero es lo que pienso. Screen es una pasada, creo que no podría vivir el día a día sin esta gran maravilla de software, [pero su desarrollo está descontinuado el último paquete estable se ha quedado estancado en 2008] FALSO. Actualización: Como nos cuenta AlBundy en los comentarios, el desarrollo está activo y se espera empaquetar otra nueva rama estable de Screen pronto.

Sin embargo Tmux (con un poco de tweaking de keys para los que ya tenemos el vicio y la cosumbre de screen), supone una bocanada aire fresco en este mundo de terminales en el que nos ha tocado vivir. Lo he instalado y configurado en todos mis Desktops, sin embargo en algún que otro servidor me lo he tenido que currar un poco más puesto que no está disponible de forma oficial.[@MORE@]

Me refiero a Debian Lenny 5.0, que no tiene tmux dentro de sus repositorios, así que no he tenido más remedio que compilarlo y hacer el paquete debian, aquí os dejo las instrucciones, y un poco más abajo los paquetes para vagos:

# wget http://monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
# tar xvfz libevent-1.4.14b-stable.tar.gz
# cd libevent-1.4.14b-stable
# ./configure
# make
# checkinstall
# wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.5/tmux-1.5.tar.gz
# tar xvfz tmux-1.5.tar.gz
# cd tmux-1.5/
# ./configure
# make
# checkinstall

Tmux depende de una versión de libevent superior a la 1.4, como en Debian Lenny 5.0 viene de serie la 1.3e-3 nos obliga a crear binario de una versión superior. Una vez tenemos los .deb generados hemos de instalarlos con dpkg -i (siempre y cuando checkinstall no los haya instalado ya). Actualizamos los vínculos de las librerías compartidas y ya estamos en disposición de lanzar tmux.

# ldconfig
# tmux

Dejo también un enlace a los binarios generados (lazy mode on), puesto que no encontré nada similar por Internet, quizá pueda servir a alguien:

Y además, para acabar la jugada, dejo constancia también de una configuración que mapea prácticamente todos los atajos de teclado de Screen a Tmux para el .tmux.conf:

# Ademas de Ctrl+B, agregamos un atajo de teclado tipo screen (Ctrl+A)
# Para tmux < 1.6:
set-option -g prefix C-a

# Empezar la numeracion de las ventanas creadas en 1 (la primera ventana)
set -g base-index 1

# Si corremos un tmux dentro de otro, como enviar comandos al mas interno (C-A C-A comando)
bind-key a send-prefix

# Pasar a modo buffer con C-A espacio ademas de con [ y RePag
bind-key Space copy-mode

# Partir ventanas intuitivamente con | y -
unbind %
bind | split-window -h
bind - split-window -v

# Establecer barra de estado personalizada
set -g status-bg black
set -g status-fg white
set -g status-left ""
set -g status-right "#[fg=green]#H"

# Iluminar de rojo en la barra de estado la ventana activa ademas del "*"
set-window-option -g window-status-current-bg red

# title A
unbind A
bind A command-prompt "rename-window %%"

# More straight forward key bindings for splitting
unbind %
bind | split-window -h
bind v split-window -h
unbind '"'
bind - split-window -v
bind h split-window -v

# History
set -g history-limit 1000

# " windowlist -b
unbind '"'
bind '"' choose-window

# other ^A
unbind ^A
bind ^A last-window

# kill K k
unbind K
bind K confirm-before "kill-window"
unbind k
bind k confirm-before "kill-window"

# prev ^H ^P p ^?
unbind ^H
bind ^H previous-window
unbind ^P
bind ^P previous-window

unbind BSpace
bind BSpace previous-window

# next ^@ ^N sp n
unbind ^@
bind ^@ next-window
unbind ^N
bind ^N next-window
unbind " "
bind " " next-window
unbind n
bind n next-window

# Terminal emulator window title
set -g set-titles on
set -g set-titles-string '#S:#I.#P #W'


# Status Bar
set -g status-bg black
set -g status-fg white
set -g status-interval 1
set -g status-left '#[fg=green]#H#[default]'
set -g status-right '#[fg=yellow]#(cut -d " " -f 1-4 /proc/loadavg)#[default] #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]'

# Notifying if other windows has activities
setw -g monitor-activity on
set -g visual-activity on

# Highlighting the active window in status bar
setw -g window-status-current-bg red

Venga, como extra y sin que sirva de precedente, una rápida para tenerlo funcional cuanto antes:

# wget http://static.userlinux.net/deb/libevent-1.4.14b_1.4.14b-1_i386.deb
# wget http://static.userlinux.net/deb/tmux_1.5-1_i386.deb
# dpkg -i libevent-1.4.14b_1.4.14b-1_i386.deb
# dpkg -i tmux_1.5-1_i386.deb
# ldconfig ; cd
# wget -qO- http://paste.userlinux.net/212/raw/ > .tmux.conf
# perl -pi -e 's/\r\n/\n/g' .tmux.conf

Imprescindible también tener un alias tmux='tmux -u' para abrirlo en modo utf8 y que no se haga un lío con las tildes y los caracteres tan extraños que tenemos en el idioma de Cervantes.

Y creo que con ésto me ha quedado una entrada bastante curiosa sobre instalación y configuración, si queréis aprender más sobre el uso, os recomiendo la entrada del wiki de Santiago Romero sobre Tmux, porque es de lo mejorcito.

Espero que sirva, enjoy it!

sysadmin debian

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.
  • Hola,aprovecho este post para felicitarte primero por tu blog. Respecto al tema del post (tmux vs screen) me gustaría desmentir la afirmación, que tu haces y que se repite en muchos sitios, según la cual el desarrollo de screen está parado. Eso es falso. Es cierto que si buscamos la última versión de screen empaquetada, vemos que es de una fecha antigua. Pero el desarrollo continúa en su repositorio git, y en sus listas de correo. Existen varias ramas de desarrollo con nuevas carcaterísticas interesantes, que en cuanto se pulan un poco se integrarán con la rama principal, y podremos disfrutar de un nuevo paquete estable oficial. Dicho esto, tmux es cierto que tiene mucho más movimiento. (Y dicho sea de paso, a mí me gusta más tmux que screen). Saludos.
  • Cierto @AlBundy, acabo de mirar *bien* en el git y hay cambios en el branch master de hace 5 días (http://git.savannah.gnu.org/cg.... Mea culpa. Gracias por el comentario y por la rectificación, he editado el post para no caer en el mismo error. Un saludo.
blog comments powered by Disqus