Semana Negra - Sobrevivir en la shell

index | OSiUX | blog | docs | charlas

tmux.png

el juramento

Desde el 28 de Abril del 2014 y por una semana completa debía cumplir con el juramento propuesto desde el sitio elbinario.net 1

Te deposito mi corazón junto al tuyo, para hacer que el nuestro
sea uno más ancho y seguro. Hago compromiso ante ti,
terminal. Seré tuya por una semana. Cuando me sienta débil, seré
fuerte y no arrancaré las x, cuando el ascii de los vídeos me
agobie, seré fuerte y veré la saga entera de starwars en ascii,
seré firme cuando los ojos no aguanten, seré tu sombra cuando no
sepa algún comando, seré sonrisa, seré llanto.

Hasta que la interface gráfica nos separe.

motivación

A diario abuso de la terminal, de hecho practicamente la única aplicación gráfica que uso es Firefox, todo lo demás vive en un screen/tmux usando terminator y como siempre digo:

yo uso la consola sólo por si en algún momento no tengo X

Que mejor ocasión para probar vivir sin X.

desafío doble

Tenía que lograr sobrevivir la semana en una desktop en el trabajo (trabajando) y en una notebook compartida en casa, en el primer caso coincidió justo con el cambio de distro, asi que directamente deshabilité X en mi nuevo Huayra GNU/Linux 2.0 2.

En casa no pude deshabilitar X por tratarse de una compu compartida, asi que me mantuve en una tty usando CTRL+ALT+F1 cada vez que necesitaba hacer algo.

blog desde la tty

Justo 2 días antes, participé del FLISoL en la UNDAv 3 asi que tenía que comenzar la mañana escribiendo un post lo cual no representaba mayores desafíos porque uso Org-mode 4 que es parte de EMACS 5, pero me encontré con un primer problema, ver y editar las fotos que incluiría…

Probé de utilizar cacaview del paquete caca-utils 6 y la verdad que hace honor a su nombre ;-), al menos para ver una foto en ascii-art no sirve de mucho, la imagen inicial a pantalla completa se ve así:

cacaview.png

Haciendo un zoom se puede apreciar mejor pero, hay que scrollear mucho para entender toda la imagen:

cacaview-zoom.png

Por suerte contamos con la ayuda de fbi que utiliza el Framebuffer 7 y se visualiza a la perfección:

fbi.png

El resultado final, pude visualizarlo mediante links2 agregando los parámetros -driver\=directfb -g

links2.png

tmux y mplayer

A diario uso tmux, sólo tuve que modificar la statusbar porque se redibujaba mal, en realidad no usaba muchas características, tiendo a un entorno minimamilista, y sólo para probar pude ver un video usando mplayer con la opción -vo fbdev2 sin inconvenientes por sobre el tmux.

tmux-mplayer.png

problemas encontrados

No funciona correctamente el UTF8 en la terminal, probé con /bin/unicode_start pero no se ve nada bonito, después vi que algunas fuentes no tienen todos los caracteres, usando fbterm mejora notablemente la experiencia.

resumen y encuesta

Se realizó un resumen 8 de la experiencia y se realizaron las siguientes preguntas, las cuales paso a responder…

¿Cómo me he sentido en la consola?

Muy bien, confirmé que mi entorno esta preparado para una tty aunque algunas configuraciones tuvieron que ser adaptadas, en general no tuve inconvenientes.

¿Lo más sencillo?

Utilizar tmux en una tty no varía de un emulador de terminal, asi que rápidamente estaba operativo y podía también trabajar en remoto levantando mi tmux vía ssh. Sólo que tmux no se llevó bien con fbterm que aparenta ser una buen terminal que usa framebuffer

¿Lo más difícil?

Navegar por la web, si bien en mi Firefox tengo plugins que deshabilitan javascript por defecto, algunos sitios fueron imposibles de navegarlos usando w3m y links2.

¿Qué necesidades no he podido cubrir durante la semana?

Usar el Home Banking, nuevamente javascript y un diseño para navegadores modernos impidió realizar movimientos, al menos pude ver el saldo de mi cuenta :-)

Herramientas que he usado:

Las habituales, sólo tuve que reemplazar Firefox por links2. Se puede ver un ranking de los comandos más usados en la semana, de acuerdo al historial de bash.

cat ~/semana-negra.log | head
echo
cat ~/semana-negra.log | awk '{print $3,$4}' | sort | uniq -c | sort -nr | head -20 | barra
2014-04-28 08:27 clear
2014-04-28 08:27 df -h
2014-04-28 08:27 ps ax | grep -i x
2014-04-28 08:27 tls
2014-04-28 08:30 cd
2014-04-28 08:30 cdo
2014-04-28 08:30 cdo
2014-04-28 08:30 unicode_start 
2014-04-28 08:31 cd
2014-04-28 08:31 cd /mnt/data/

 23.97 %  23.97 %        58 ████████████ ls 
 36.36 %  12.40 %        30 ██████ :q 
 46.69 %  10.33 %        25 █████ l 
 54.13 %   7.44 %        18 ███ cd 
 59.92 %   5.79 %        14 ███ sudo 
 65.70 %   5.79 %        14 ███ pwd 
 69.83 %   4.13 %        10 ██ mplayer 
 73.97 %   4.13 %        10 ██ for 
 76.86 %   2.89 %         7 █ telegramas 
 79.75 %   2.89 %         7 █ ps 
 82.64 %   2.89 %         7 █ clear 
 85.12 %   2.48 %         6 █ gst 
 87.60 %   2.48 %         6 █ cdh 
 89.67 %   2.07 %         5 █ tls 
 91.74 %   2.07 %         5 █ ln 
 93.39 %   1.65 %         4 █ reboot 
 95.04 %   1.65 %         4 █ mmi 
 96.69 %   1.65 %         4 █ cd 
 98.35 %   1.65 %         4 █ cdi 
100.00 %   1.65 %         4 █ cd 
                        242

Usos de la shell frente a X y viceversa

El mejor de los mundos es que exista un comando que hace todo lo que necesitás, si con mil parámetros y luego una o varias gui que permitan usos simples y cada usuario podrá elegir su interfaz.

El frío en la shell

Para nada! mi $TERM esta seteada en screen-256color :-P, además no hay como el fondo negro y letras verdes para aclimatar los ojos, la shell es mi amiga

¿Programas pesados?

No hay duda que las aplicaciones gráficas son enormes y tienen varias capas de abstracción y niveles que no hacen más que gastar un montón de bytes para mostrar un pixel gris oscuro para tener un bonito sombreado. OjO no hay duda, si hacés diseño o necesitás alguna aplicación que verdaderamente aprovecha el entorno gráfico usala, para todo los demás existe una terminal liviana y ágil.

¿Cómo resumirías tu experiencia Alone in the shell?

Muy productiva, pude poner a prueba mi entorno, corrigiéndolo para que se vea casi igual tanto en X o en una tty.

Lo mejor fue que logré sobrevivir toda la semana a la consigna, lo cual demuestra cierta disciplina, más allá de los tecnicismos.

Utilizar el modo gráfico sobre framebuffer debería estar más soportado por más aplicaciones aunque en cierto punto parecería que es hacer trampa, ya que nos estamos escapando de la salida a puro texto plano :-P

La destreza sobre una consola, sólo se consigue usándola a diario y puede ser vital tener dominio sobre ella, casualmente unos días después al realizar una entrega de un proyecto, un viernes a última hora, justo cuando estábamos terminando, se cortó la luz y pudimos continuar con los últimos minutos de la UPS desde una tty en el servidor, gracias a screen/tmux y unos bonitos túneles ssh, de otro modo, no hubieramos podido…

También para el usuario de notebook, mi experiencia demuestra que la batería rinde el doble trabajando únicamente desde una tty.

Asi que recomiendo a todos a tener una semana negra como entrenamiento para convertirse en un console ninja. :-)

Nota al pie de página: