Sobrevivir sin las X - Consola virtual




En cualquier instalación estándar de linux disponemos de 6 terminales de consola. Pulsando ALT + F1...F6 accedemos a cada uno de ellos.
Con screen se puede iniciar una sesión con tantos terminales virtuales como queramos en un mismo terminal. Con dvtm podremos abrir distintos terminales visibles dentro del mismo terminal.

· dvtm
dvtm es un gestor dinámico de terminales virtuales. Nos permite dividir el terminal en dos o más terminales virtuales y cambiar entre ellos con una combinación de teclas. Quizás se entienda mejor esto en la captura (un xterm con tres terminales virtuales abiertos):


Una vez descargado el código fuente y desempaquetado editamos el archivo config.mk si queremos cambiar el directorio de instalación (por defecto /usr/local) y config.h para modificar el comportamiento de las teclas. Asegurandonos de tener instalado libncurses5 o libncursesw5 (si nuestras locales son utf8) ejecutamos make ( o make unicode) y make install.
Ejecutamos el programa escribiendo dvtm en una consola. El manejo del programa es simple; pulsando Ctrl + g ( así es como viene configurado por defecto) y a continuación otra tecla se ejecutará la acción deseada.
Las teclas básicas (precedidas de Ctrl + g) son:

c Crea una nueva ventana de shell.
j Cambia entre ventanas.
1..n Va a la ventana número n.
space Cambia entre distintos esquemas de organización en las ventanas.
. Minimiza la ventana actual.
l Incrementa el ancho e la ventana.
h Decrementa el ancho de la ventana.














Captura de un tty con dvtm dentro de un screen
Para una información más completa sobre todas las combinaciones consultar las páginas del manual.


· screen
Screen es una herramieta que suele venir incluida en cualquier distribución Linux que permite, entre otras cosas el uso de varios terminales en un mismo terminal.
El comando screen a secas nos abrirá un terminal con un shell donde podemos lanzar una aplicación. Podemos abrir una sesión screen y una vez en ella pulsar C-a d y dejar libre el terminal, mientras que las aplicaciones seguirán corriendo. Un screen -r nos recuperará la sesión.
Si la aplicación es lanzada en consola TTY, en X Window la recuperamos con screen -x.
Por ejemplo, se puede abrir un screen con irssi en consola y seguir el chat desde un entorno de ventanas, pero si rompe xorg, las aplicaciones seguirán ejecutándose en la consola.
A su vez, si ejecutamos la combinación de teclas Ctrl a y a continuación c(reate) nos creará otro shell superpuesto al anterior. Todas los comandos de tecla en screen van precedidos de la combinación Ctrl a que en adelante omitiré. Podemos ir de un shell a otro pulsando n(ext) o p(revious).

Tambien podemos definir en /etc/screenrc una serie de aplicaciones que se iniciarán automáticamente al ejecutar el comando screen :

/etc/screenrc
startup_message off
deflogin on
vbell on
vbell_msg " Wuff ---- Wuff!! "
defscrollback 1024
bind ^k
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history
termcapinfo vt100 dl=5\E[M
hardstatus off
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
hardstatus string "%h%? users: %u%?"
termcapinfo xterm*|linux*|rxvt*|Eterm* OP
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
screen -t rtorrent rtorrent
screen -t orph orph
screen -t irssi irssi
hardstatus on
hardstatus string "%{.kB}%-w%{.kY}%n %t%{-}%+w %=%{..B} %H %{..Y} %d/%m %C%a "
hardstatus alwayslastline














La penúltima línea del script de configuración sirve para establecer la línea de estado en la parte inferior de la pantalla, mostrando las shells abiertas numeradas y el nombre de la aplicación que se está ejecutando en cada una de ellas. Tambien muestra el nombre del host, la fecha y la hora.

Teclas más usuales dentro de screen (todas precedidas de Ctrl +a)

c Crea una nueva ventana
n Va a la próxima ventana
p Va a la ventana anterior
0..9 Va a la ventana según la numeración
" Lista las ventanas abiertas, pudiendo navegar entre ellas
con j y k y pulsando Enter para seleccionar
w Lista de ventanas no interactiva
A Cambia el nombre de la ventana
[ Copiar
] Pegar
? Ayuda
d Despega la sesión screen del terminal


Screen tiene muchas funcionalidades más que se alejan del alcance de este escrito; man screen es fundamental.

3 comentarios:

anduim dijo...

Hola kir!

Ayer empecé a preparar un artículo sobre este mismo tema, pero te me has adelantado :)

Saludos!

kir dijo...

Salve anduim.

Ánimo pues; screen se merece un artículo más en profundidad que este vistazo "de reojo".

Lo espero ansioso,

anduim dijo...

En cuanto tenga un rato prometo ponerme a ello :D