tmux + terminator + awesome
index | OSiUX | archive | charlas | docs | links
dot
|
git
|
img
|
plt
|
tty
|
uml
porqué usar tmux?
Durante mucho tiempo que uso screen
y me resulta muy útil, muchos
desconocen que se pueden hacer split horizontal y vertical usando
(CTRL-A + |
y CTRL-A + -
).
Luego de leer varios tutoriales para tmux llegué a dos conclusiones:
- es un reemplazo de screen (muchos sugieren mapear el
CTRL-B
porCTRL-A
- es para usar con monitores grandes!
Debido a esto es que tarde en implementarlo, screen
parecía
suficiente y tmux
no me resultaba del todo atractivo.
tmux + terminator + awesome
Hasta que decidí probarlo y descubrí que podía adaptarlo a mi
manera de trabajar. Habitualmente uso awesome
1 y
terminator
, me resultan muy cómodos, por un lado terminator
permite realizar un split muy fácil, usando CTRL+SHIFT+E
y
CTRL+SHIFT+O
. Por otro lado usando SUPER+1..9
me permite
cambiar de workspace fácilmente, de esta manera venía trabajando
con 1 terminal por workspace, esto resulta muy útil para mantener
el foco en una única aplicación y no distraerse.
Ahora en cada terminal hay una sesion de tmux
corriendo y cada
sesion esta dividida en diferentes ventanas y en muy pocos casos
además cada ventana en diferentes paneles. No me resulta cómodo
usar varios paneles porque no puedo tener diferentes tamaños de
fuente en cada panel (al menos yo no encontré cómo hacerlo) y esa
funcioalidad la realizo con terminator
, normalmente lo utilizo para
ver logs locales o remotos relacionados a lo que estoy trabajando.
definiendo sesiones
Sin dudas, una de las mejores características de tmux
es el poder
definir la composisión de una sesión, la cantidad y tamaño de las
ventanas y/o paneles.
Un ejemplo de cómo se puede definir una sesion mediante un script
bash
, por ejemplo ~/bin/tmuxosiux
es el siguiente:
#!/bin/bash cd ~ tmux new-session -d -s osiux -n 'mm' 'mutt -F ~/config/mutt/muttrc-imap-osiux-gin' tmux new-window -t osiux:2 -n 'mx' 'mutt -F ~/config/mutt/muttrc-imap-xuiso-gin' tmux a -t osiux
De esta manera se crea una sesion osiux con dos ventanas mm y
mx, en la primera levanto un mutt
con la cuenta osiux y en la
otra ventana un mutt
con la cuenta xuiso. Para simplificar su
ejecución defini el alias tmx
.
Entonces tengo asociada cada sesion de tmux
a un workspace de
awesome
con el siguiente esquema:
ws | alias | comando |
---|---|---|
1 | tmo | tmuxosiris |
2 | tgca | tmuxgca |
3 | tmx | tmuxosiux |
7 | temacs | tmuxemacs |
8 | tmoc | tmuxmoc |
9 | tchat | tmuxchat |
Otros alias que uso bastante son:
alias tas='tmux a -s ' alias tls='tmux ls' alias tma='tmux a' alias tns='tmux new-session -d -s '
screen
dentro de tmux
No cambié el default de CTRL+B
de tmux
como reemplazo de
screen
, esto permite que pueda ejecutar screen
dentro de tmux
e invocar los comandos de screen
mediante CTRL+A
y al mismo
tiempo sin superponerse los comandos de tmux
. Generalmente utilizo
screen
en servidores remotos para procesos que requieran una
ejecución prolongada.
local y remoto de la misma manera
La gran ventaja de usar tmux
es poder mantener abiertos todos
los programas con la configuración de ventanas y paneles tanto
localmente como remotamente vía ssh
, es decir, no necesito cerrar
nada y al terminar el día, al volver a casa puedo conectarme por
ssh
al trabajo y esta todo donde lo dejé, continuar con algo
que me olvidé o necesitaba mi atención, hacer un tmux detach
o
CTRL-B
y quedarme que esta ahi corriendo en segundo plano y que
puedo recuperar mediante un tmux attatch
en cualquier momento y
desde cualquier lugar.
tmux list-windows -a chat:2: finch* (1 panes) [140x47] emacs:2: emacs!* (1 panes) [140x47] gca:2: vim* (1 panes) [140x47] gca:3: socks# (1 panes) [140x47] gca:4: ssh#- (1 panes) [140x47] gcoop:1: mg!* (1 panes) [140x47] gcoop:3: mo#!- (1 panes) [140x47] moc:2: mocp* (1 panes) [140x47] osiux:1: mm!* (1 panes) [140x47] osiux:2: mx#!- (1 panes) [140x47]
Dado que la única aplicación que uso que no vive dentro de una
terminal es Firefox, todo mi entorno se reduce a una terminal y
tmux, ya sea local combinando con awesome como remotamente mediante
ssh
, y esto además de resultar muy cómodo es extremadamente
productivo, pueden pasar 2 días y puedo volver en cualquier momento
a un archivo abierto en una línea determinada de cualquier proyecto
y remotamente!
Por tratarse de una conexión ssh
que sólo envía texto plano,
no requiero de ancho de banda, de ser necesario puedo recuperar la
sesión desde un telefono espía con android
tmux es un excelente monitor
También resulta muy útil utilizar tmux
como herramienta de
monitoreo, por ejemplo en malbec a veces es necesario monitorear
las conexiones de red y como hay varias placas de red, mediante un
script tmux es muy simple ver que esta sucediendo en cada interfaz de
red al mismo tiempo:
#!/bin/bash cd / tmux ls | grep gorra >/dev/null 2>/dev/null OK=$(echo $?) if [ $OK -eq 0 ] then tmux a -t gorra else tmux new-session -d -s gorra 'iftop -n -i eth3' tmux select-window -t gorra:0 tmux split-window -h -t 0 'iftop -n -i eth5' tmux select-window -t gorra:0 tmux split-window -h -t 1 'iftop -n -i eth0' tmux split-window -h -t 0 'iftop -n -i eth4' tmux select-window -t gorra:0 tmux split-window -v -t 0 'nbwmon -i eth3' tmux select-window -t gorra:0 tmux split-window -v -t 1 'nbwmon -i eth5' tmux select-window -t gorra:0 tmux split-window -v -t 2 'nbwmon -i eth0' tmux select-window -t gorra:0 tmux split-window -v -t 3 'nbwmon -i eth4' tmux a -t gorra fi
Para visualizar varios archivos de logs al mismo tiempo:
ChangeLog
2019-04-18 00:21
Agregar hora en header date2019-04-18 00:01
Corregir identación header #+INCLUDE:2015-07-03 03:59
@ 01:00 hs - reemplazo :alt por :title y cambios menores2015-06-30 05:10
@ 00:15 hs - recupero posts a medio terminar :)