Hermanos Juramentados de la Espada Negra
Viviendo en la terminal. 1ª Parte
23-4-2021 19:40
Por Taraak

Viviendo en la terminal.
========================

O la guía introductoria definitiva para vivir en la terminal y descender al último estadio de locura. Los haters son bienvenidos.

En la reciente caza de brujas contra Richard Stallman y la ortodoxia hacker de la FSF, el equipo del servidor gráfico X11 se ha posicionado del lado de las turbas ruidosas, las cuales empuñando horcas y antorchas clamaban contra el vil monstruo que se había atrevido a decir algo incómodo; el hecho de que desprecien de semejante manera a una de las personas que más ha contribuido, y de hecho contribuye a la comunidad, mientras que a nadie escapa que X11 es un desastre que debería haber sido sustituido largo tiempo atrás, es en cierto modo cómico. ¿Pero qué podemos hacer sin tan vital pieza de software?, espera, ¿he dicho vital?, pues lo cierto es que no lo es (dejemos de lado Wayland por el momento), si bien en caso de prescindir de un entorno gráfico nos veríamos fuertemente limitados en ciertos aspectos (o más bien nos complicaríamos muchísimo la vida) como pueda ser la edición de audio, vídeo, imagen o videojuegos, lo cierto es que para todos los demás menesteres la terminal nos sobra, y no estoy bromeando, desde visualizar imágenes y comics a reproducir vídeos y navegar por internet, todo ello es posible hacerlo prescindiendo del entorno gráfico.

En los sistemas operativos modernos (y por moderno me refiero a que pasados los 16 bits todos lo tienen) existe una cosita llamada framebuffer, este framebuffer es una sección de memoria aleatoria, ahora normalmente RAM normal (antes habían módulos dedicados), que contiene el mapa de bits de lo que hay dibujado en la pantalla, en GNU/Linux así como en los diversos sistemas operativos de la familia BSD un programa puede interactuar directamente con dicha memoria e indicarle qué mostrar, es gracias a esto que nuestra vida en la terminal puede ser más que texto.

Las limitaciones más evidentes son que le tenemos que indicar a los programas dónde y cómo mostrar su información, esto nos va a requerir tener un cierto conocimiento de las opciones del programa (esas que te listan cuando tecleas man nombre-del-programa, así como indicar al framebuffer cómo mostrar las imágenes en ciertos casos. Otra es que a la hora de reproducir un vídeo, este se mostrará en todas las terminales, aunque lo abras en la F4 y pases a la F2 el framebuffer sigue teniendo la orden de dibujarlo; la excepción a esto es que tengas abierto en una de las TTYs un entorno gráfico, en esa no se mostrará; o que si dos fuentes de información envían información concerniente a una misma zona, esta se superpondrá por orden de llegada. Con un servidor gráfico eso es manejado por dicho servidor, digamos que hay capas que se pueden superponer y actualizarse independientemente de lo que es mostrado en la pantalla, trabajando con el framebuffer eso no funciona, si hay actividad bajo la foto que quieres ver, dicha actividad se superpondrá a la imagen y si hay actividad tras el vídeo que reproduces, la información se irá superponiendo la una a la otra. En resumen: evita superponer dos programas en el framebuffer, si eres un usuario de gestores de ventanas en mosaico no te será difícil. O puedes leer hasta el final y verás que hay una forma de superar estas limitaciones, si bien es un poco más complicado de poner en funcionamiento que el resto de recomendaciones.

Supongo que tengo que responder en esta introducción un par de preguntas de rigor: ¿Es mi sistema compatible con lo aquí mostrado?, pues si tienes una versión de Linux posterior a 1999 si, en caso contrario actualiza, no, en serio, actualiza de una puta vez. ¿Y que hay de la familia BSD?, si bien esto está redactado sobre el kernel Linux, gran parte de lo que se va a mostrar depende de los programas, los cuales pueden ser adaptados (o ya han sido adaptados) a muchos sistemas tipo Unix, así que o esto es directamente aplicable o solo modificaciones menores serán necesarias; este tema podríamos tratarlo en un futuro si interesa.



Trucos para moverse por la TTY.


Empecemos por un truquito que he descubierto durante este periplo y me encanta, mientras estás en la TTY es posible desplazarte por el comando que escribes con los atajos de Emacs, es decir C-f para avanzar y C-b para retroceder, pero también en el historial de comandos, con C-p para ir al comando anterior y C-n para ir al comando siguiente; puede que te parezca mas sencillo usar las flechas, pero cuando te acostumbras la comodidad de no tener que irte a la esquina del teclado a cada dos por tres no tiene precio. Tampoco hace falta usar C-M F* para cambiar de terminal (si no te encuentras en un entorno gráfico), con M-F* que es mucho mas ergonómico es suficiente.



Minimizar programas.
-
Es posible minimizar un programa con el atajo C-z, puedes tener varios programas minimizados y verlos con el comando jobs que les asigna un número identificativo, estos procesos pueden ser restaurados en cualquier momento con el comando fg seguido del número indicativo del proceso.



RTFM.
-

Se que muchos de vosotros ya conozcáis lo aquí tratado, pero esto sigue aspirando a abarcar tantos usuarios como estén interesados en el tema; y las cosas claras, aquí en la terminal las cosas son diferentes, no necesariamente mas difíciles siempre, pero si requieren de leer, mientras que en los entornos gráficos hay que recordar una cantidad de metáforas visuales y ver tutoriales de jutú, aquí hay que memorizar abreviaturas judaicas (¿lo pilláis?, porque quitan las vocales, :^D... ¿no?, joooo...) y leer, leer un montón, como dicen los gruñones veteranos: "Lee el puto manual":

MAN va a ser tu comando de cabecera, invocándolo frente al comando que deseemos nos dará la documentación que los desarrolladores adjuntan a los programas, pero con bastante frecuencia son MUY extensos, para poder navegarlos con mas facilidad hay dos trucos. Puedes navegarlos haciendo uso de los atajos de teclado típicos de Emacs (C-p y C-n) y Vim (k y j ) para subir y bajar; también puedes buscar dentro de dichas páginas; esto es tan sencillo como presionar / y teclear la palabra o frase clave que quieras buscar, las coincidencias serán subrayadas en el texto, podrás también saltar entre coincidencias con n y S-n, buscar de forma reversa (hacia atrás) usando ? o mostrar solo las líneas adecuadas con &.

APROPOS es un comando que merece mucho mas cariño del que recive; su uso es un poco como en esos casos en que no recuerdas el nombre o letra de una canción y preguntas, ¡hey!, ¿como es esa canción que es naaa, naaa, na, nanana nanananaaaaaaaa?, solo que para comandos, tecleas el comando seguido de lo que sea que recuerdes y te saldrán las coincidencias, por ejemplo apropos coppy nos dará los nombres de todos los comando y paquetes instalados, que tengan dicho termino en sus nombres o definiciones.

WHATIS es justo como cuando recuerdas el título de una película o la cara de una persona, pero no podrías ni por tu vida decir de que iba o quien es, tecleando whatis nombre-del-programa obtendremos una concisa descripción de dicho paquete; si bien este comando apenas lo uso, no es una mala idea tenerlo en cuenta.



Imagen.


Opciones para mostrar imágenes hay muchas, pero yo escogeré centrarme en las dos opciones que mas me convencen, W3M y FIM. El primero es teóricamente un navegador web que de hecho podremos usar como visor de archivos genérico, tanto dentro de Emacs como por separado, es una herramienta muy potente y usarla nos permitirá intregrar muy bien nuestro flujo de trabajo, cosa que se agradece; cuando necesitas aprender tantas cosas de nuevo, su coherencia es realmente de agradecer. Respecto a Fim no tengo demasiado que decir, es bueno, excelente de hecho, muy popular, por lo que podrás encontrar ayuda con facilidad y es realmente cómodo de usar. ¿Cual recomiendo de los dos?, pues ambos son perfectamente intercambiables y no veo que se complementen; prueba los dos y quédate con el que prefieras.



El uso básico de W3M es mas sencillo que el mecanismo de un martillo, w3m imagenes-que-desees-ver, si quieres ver todas las de una carpeta w3m *, etc; eso es para usarlo como un simple visor, un uso muy básico, pero podemos hacer uso de el con unas capacidades de gestión, para ello será suficiente con invocarlo con el atributo edit, quedando tal que así w3m edit imagenes-a-visualizar. Una vez iniciado el visor puedes ver los comandos pertinentes presionando h; resumiendo los mas importantes tenemos:

- Siguiente ESPACIO/j/AvPag.
- Anterior k/RePag.
- a para ajustar el zoom a la pantalla.
- +/- para ajustar el zoom y las flechitas para mover el foco de la imagen cuando esté ampliada.





Como ya he dicho Fim y W3M para tratar con imágenes son completamente equivalentes, no son idénticos pero da prácticamente igual usar uno u otro; los controles de FIM son ligeramente distintos, siendo los básicos:

- Siguiente ESPACIO/Enter(Ret, para los emacsianos)/n/AvPag.
- Anterior Bacspace(la teclita de borrar)/b/RePag (como puedes apreciar van cómodamente emparejadas).
- a para ajustar el zoom a la pantalla.
- +/- para ajustar el zoom y las flechas para mover el foco de la imagen cuando esté ampliada.

FIM es mi elección personal, no cuenta con el cómodo menú de ayuda de W3M y hay que aprenderse un par de opciones nuevas en su uso avanzado, pero me gusta que puedo usarlo de forma algo mas desatendida con el zoom.



PDF.


Dejando de lado mi escaso gusto por este formato, entre otras cosas por lo quisquilloso del mismo que hará que ningún visor pueda garantizarnos un funcionamiento adecuado en todos los casos, lo cierto es que a día de hoy es un estándar de facto; siendo por tanto imperativo que tengamos capacidad de trabajar con dicho formato. Las opciones que mas destacan en este ámbito son W3M, con el cual aplica lo mismo que en el apartado de imágenes, así que no me repetiré, solo mencionar que tiene el defecto de necesitar cargar el PDF enterito por adelantado, pero la ventaja de tener una de las mas exactas representaciones de los mismos; la siguiente recomendación es Fimgs, el cual viene junto al paquete Fim anteriormente mencionado con el cual comparte controles, tiene los mismos pros y contras de W3M, pero añadiendo uno nuevo de cada, por un lado que funciona con muchísimos mas formatos (va a repetir posición mas adelante), pero por contra tiene que hay que invocarlo indicándole la resolución deseada en caso de que la predeterminada de 120x120 no sea de nuestro agrado, lo cual haremos con la opción -r (reitero mi recomendación de que crees alias para estos comandos). Cual elijas dependerá de tus gustos.

Y finalmente recomiendo no usarlo, si, no me patinan las neuronas, recuerdo lo que he dicho anteriormente, esta opción tiene truco, básicamente se trata de convertir entre formatos, esta es con diferencia mi opción preferida, especialmente para la lectura de libros; para tratar con documentos oficiales y papeleo no tanto. La herramientas principales, y que te van a recomendar en todas partes por muy buenas razones, son Calibre, cuyo gran fuerte es sin duda alguna la calidad de sus conversiones, y Pandoc, que si bien da en contados casos resultados algo inferiores en la conversión, es una herramienta mas flexible; Calibre tiene la ventaja en otras situaciones de que es un excelente gestor, conversor y lector de libros electrónicos, pero para ello depende del uso de un servidor gráfico, por lo cual en esta situación nos da bastante igual y en mi opinión se queda un poco por detrás de Pandoc, especialmente si dependes de compilar o de máquinas poco potentes, pues Calibres es un paquete bastante pesado.

Calibre lo usaremos para convertir formatos invocándolo con: ebook-convert fichero.pdf fichero.epub .

Con Pandoc tenemos un poco mas de complejidad dada la remarcable potencia y flexibilidad de la herramienta. Aquí tienes el manual completo, pero para facilitarte su uso básico también una pequeña chuletilla:
  • -o indica el nombre del fichero de salida (al que se va a convertir).
  • -s en ciertos casos cuando tratemos con ciertos tipos de formato (como HTML), habrá de indicar esta opción después de `-o` y antes del nombre del documento de salida si queremos que la salida sea en un solo documento. En caso de que haciendo uso de ella falle la operación, quítala y probablemente se solucione.
Usar estas opciones se haría de la siguiente manera pandoc -o fichero-de-salida.epub fichero-de-entrada.txt o pandoc -o -s fichero-de-salida.html fichero-de-entrada.txt si tenemos problemas con la salida.
  • -f o from nos permite indicar el formato desde el cual se convierte, necesario solo cuando hay algún formato de extensión raruna (o sin extensión), pero que por dentro es igual o casi idéntico a otro.
  • -t o too indica la conversión a un formato especifico.
El uso de estas opciones seria como sigue: pandoc -f txt -t epub texto-a-convertir.txt o pandoc -f txt -t epub texto-a-convertir.txt texto-convertido.epub si queremos cambiar el nombre.
  • Podemos pasarle a Pnadoc como entrada un página web, se haría así pandoc -f html -t markdown https://www.fsf.org para guardar la página de la FSF en formato markdown.
Este sería el uso básico que pues necesitar al comienzo de tu periplo, cierto que hay mas, muchas mas opciones, pero estas son las que mas te vas a encontrar usando.



Otros libros electrónicos.


Para leer estos otros formatos que no apestan recomiendo encarecidamente Epy ~~y Blas~~, su único defecto es la incapacidad actual para mostrar imágenes, esperemos que en un futuro esto sea superado, si alguien sabe de Python ya tiene una buena causa a la que contribuir. Su instalación podrá realizarse desde el gestor de paquetes de tu distribución en caso de estar disponible, o desde el gestor de paquetes de Python, lo haremos en dicho caso con pip3 install git+https://github.com/wustho/epy. Su uso es de lo mas sencillo, epy nombre-del-archivo.epub y a leer; pero no se queda ahí, dispone también de un historial de libros abiertos, este se invoca con epy -r que nos dará una lista numerada con un asterisco (*) marcando el último que se ha leído, podremos leer cualquiera de ellos simplemente invocando el programa y dándole como argumento el número pertinente; en caso de que invoquemos sin argumentos nos abrirá el último que se ha leído. Si bien este programa no va a cubrir todos los casos posibles es la mejor de las escasísimas opciones que tenemos, para los casos en que sea necesario cargar un libro electrónico con imágenes nos quedan los ya mencionados W3M y Fimgs.



Texto.


¿Cual es la razón de tratar lo mas sencillo de todo ahora y no al principio?, evidentemente si no pudiésemos lidiar con texto en una interfaz de texto sin complicarnos la vida, estaríamos ante un SO de $€%@&; pero antes de poder sacarle todo el jugo posible y poder adaptarnos a los requisitos del mundo actual, me hacia falta explorar como trabajar con diversos formatos de documentos y la conversión entre ellos. Las opciones que tenemos para trabajar con texto, en la TTY o en un entorno gráfico son dos, procesadores de texto por un lado y editores de texto por otro; los editores son por ejemplo el todo poderoso Emacs, el omnipresente Vim, los minimalistas Nano y Mg, etc; de ellos no pienso hablar, algunos son tan sencillos que vienen con el manual en pantalla, otros los evito como a la peste, otros son merecedores de una condenada enciclopedia; las preferencias por unos u otros dependen tanto de que uso se les de, como de la pura subjetividad y capacidades del usuario. Elegir tu preferido y aprender a usarlo te lo dejo a ti y no creo que necesites ayuda para ello.



Un editor de textos hace eso, editar texto, para darle un formato específico necesitaras herramientas adicionales, como escribir en un lenguaje de marcas (HTML, Markdown o LaTex por ejemplo) y luego "traducirlo" a un documento adecuadamente presentado, esta opción presenta ventajas frente a usar formatos como .odt o .docx, pues el texto escrito en Markdown y LaTex es fácilmente legible a simple vista y traducirlo al formato que se desee en un momento determinado es secnillísimo, el texto plano no va a pasar de moda o cambiar, mientras que los formatos de los procesadores de texto son un pifostio. No obstante muchos se encuentran con que un editor de textos que de formato y presente los resultados al vuelo y sin intervención del usuarios se adapta mejor a sus necesidades y gustos; estos no tienen demasiadas opciones la verdad, pero la única aproximación que he encontrado digna de ser mencionada es muy buena; se trata de Wordgrinder, el cual es tan sencillo de manjar que podría usarlo incluso alguien que solo supiese encender el ordenador, meter usuario y contraseña, y teclear wordgrinder, soporta a la perfección .txt (texto plano) para quien quiera usar su inabarcable potencia y .odt (el estándar de documento abierto) para quien juega en modo fácil. La pega es que su tratamiento del formato de .docx es una soberana $€%@&, no puedo culparlo, ni la propia Macro$hit respeta sus propios estándares y hay incompatibilidades entre versiones del mismo, ni los grandes paquetes de ofimática libres pueden lograr trabajar correctamente con el siempre, no le podemos pedir a este diminuto desarrollo que lo haga; además que para suplir dicha carencia tenemos al anteriormente mentado Pandoc, el cual nos permitirá convertir .docx a un formato que no sea cancer binario, y, en caso de que los requisitos del documento a entregar hallan sido redactados por un aficionado a esnifar pegamento, de vuelta a .docx.



Hojas de calculo.
-

Si bien sustituir las hojas de calculo por ficheros de texto plano escritos en LaTeX o GROFF es posible, y de hecho es la solución recomendada por muchos; para todos aquellos que quieren un programa de hojas de calculo, ya sea por costumbre, por trabajar con hojas de calculo ya existentes o porque no les sale del rabino, hay unas cuantas opciones; todas ellas de gran calidad, cada cual con sus ventajas e inconvenientes, y todas ellas con controles muy diferentes; lo cual amigo mio puede ser desquiciante. Yo sencillamente no puedo hacer una chuleta de todos los controles relevantes, las opciones son demasiadas, los casos de uso muy distinto y seguramente siempre me dejaría algo importante, así que te toca aprender a usarlas con el manual al lado.



La opción que te encontrarás recomendada en todas partes es SC, todo un clásico de los entornos Unix que ha estado ahí desde siempre, pero que ahorita mismo anda un poco desatendido (la última versión data de 2002); para los que sientan que SC es demasiado primitivo hay un fork que aspira a ser su sucesor **(https://github.com/andmarti1424/sc-im)**, es realmente vistoso y su uso es realmente sencillo si vienes del entorno Vim, en otro caso sigue siendo sencillo, pero los atajos te parecerán arbitrarios. Recomendado si necesitas un programa de hojas de cálculo de propósito general.


Teapot, madre mía, este es alucinante, me extraña que no reciba mas amor por parte de la comunidad, por ejemplo que pesa 130KBs y funciona através de multiples sesiones SSH; pero siendo justos entiendo porque no es mas popular, no soporta casi formatos y es raro, raro de cojones, mas que un perro verde, a cambio nos da el programa de hojas de cálculo mas potente que he visto en toda mi puñetera vida, tanto que me sobrepasa y me siento como un idiota usándolo, al principio, luego te quedas maravillado y la sintaxis se hace clara y racional... hasta que dejas de usarlo por un tiempo y al regresar te sientes idiota otra vez, en este aspecto me recuerda mucho a Emacs. ¿Merece la pena?, pues si haces mucho uso de hojas de calculo y no tienes dependencia de otros formatos puedes apostar que si, en caso contrario, y especialmente si tienes un pesado bagaje de costumbres mejor escoge otro si no quieres acabar frustrado.


GNU Oleo merece también ser listado, si bien tiene problemas, como que su sintaxis (para muchos) es poco intuitiva comparada con las opciones anteriores, que solo pueda mostrar una hoja de calculo a la vez, o que de hecho su desarrollo está parado; pero sus controles emacsianos me resultan muy cómodos, su menú de funciones matemáticas me encanta y para un uso sencillo, que es el que yo le doy, va mas que sobrado, es mi preferido pero no mi recomendación. Si te interesa puede usar esta excelente guía.



GNU Pem si bien no es un programa de hojas de calculo en general, sino un programa especifico para manejar finanzas personales (como su nombre GNU Personal Expenses Manager bien indica), seamos justo, ese es el uso mas frecuente de una hoja de cálculo, así que con todo creo que merece una posición aquí, especialmente porque cumple esa función realmente bien y por ser muy sencillo de usar, mira si no la guía de usuario. Lo recomiendo si vas a usar un programa solamente para manejar tus finanzas.

(https://www.visidata.org/freq-move-row.gif)
**(https://www.visidata.org/)** se trata de un caso similar al anterior pero completamente opuesto, no siendo un programa de hojas de cálculo, sino una herramienta para manejar bases de datos tabulares, de las cuales las hojas de cálculo son solo un tipo. ¿Que es una base de datos tabular?, pues cualquier cosa que organice datos en una forma de columnas y filas relacionadas, desde las hojas de calculo ya mencionadas a los horarios de un colegio; por ejemplo, con esto últimos las columnas pueden hacer referencia a los distintos días y las filas a las horas, en cada celda se almacenarán datos como son el nombre de la asignatura y el profesor que la imparta; eso es un ejemplo de base de datos tabular y como ya he dicho, este programa está hecho para trabajar con todo tipo de las mismas. Es muy potente, relativamente intuitivo y se ve genial; si solo pudiese tener un programa de esta categoría seria este pues te va a servir, a modo de navaja suiza, para todo lo que se te ocurra (especialmente si tienes nociones de Python).



Gestores de archivos.


Si bien parte del tiempo es mas que factible funcionar en base a `ls`, `cd` y otros comandos por el estilo, y si bien es cierto que muchas veces es incluso mas cómodo hacerlo así, el resto del tiempo los gestores de archivos son sencillamente mas cómodos de usar y en ciertas ocasiones muestran considerables ventajas sobre la linea de comandos pura. Las opciones que te presento aquí, como con casi todo lo que se muestra en este artículo, no son las únicas que hay, pero si las que he probado, me han convencido y por tanto puedo recomendar.

(https://upload.wikimedia.org/wikipedia/commons/b/b8/Midnight_Commander_%282005%29_en.png)
Empecemos con **(https://midnight-commander.org/)**, este es de la familia de los llamados gestores de ventanas *"ortodoxos"*, por ser el sabor mas clásico con perdón de la línea de comandos; son recomendables y destacan especialmente a la hora de relocalizar grandes cantidades de archivos ya que permiten tener dos directorios abiertos al mismo tiempo. Midnight Commander, tiene características muy destacables como una shell integrada lo cual aúna las ventajas de un gestor de archivos y la linea de comandos, puede ser usado en conexiones remotas, es excelente para trabajar con FTP pues puedes tener en un lado el directorio del servidor mientras en el otro uno local, puedes navegar los contenidos de gran cantidad de archivos comprimidos, dispone de controles emacsianos y tiene integrado un pequeño editor, el cual no es que sea nada del otro mundo para largas sesiones de escritura o programación, pero ciertamente es útil para hacer configuraciones al vuelo y está muy a mano.

(https://upload.wikimedia.org/wikipedia/commons/e/e0/Ranger-screenshot.png)
Seguimos con **(https://ranger.github.io/)** y abrimos boca para en mundo de los gestores con *Columnas Miller*, esta forma de visualización nos muestra el directorio actual en el centro, a nuestra izquierda el contenido del directorio superior y a la derecha el contenido de la carpeta seleccionada y en ocasiones una previsualización del fichero; aunque la cantidad de columnas puede variar en configuraciones y verse desde solo dos a locuras como seis, esta es la formula mas popular. Ranger es muy popular entre otras cosas porque no hay muchas alternativas con Columnas Miller, pero también porque su sistema de menús invocados por atajos es excelente, presionas `o` y todas las opciones sobre como mostrar los archivos de la carpeta aparecen ante tus ojos, presionas `p` y lo hacen las opciones de pegado, presiona `r` y ves todos los programas para abrir tu archivo, `y` y lo hacen las de copia, `d` y lo hacen las de copia y eliminación, todo ello junto a los atajos necesarios para invocarlas, es un sistema muy eficiente pero no es la única de sus ventajas, soporta atajos emacsianos y vimeros, con `:` abres una terminal y su sistema de previsualización funciona con casi todo incluso imágenes instalando y configurando el paquete `w3m-img`... y esa parte de la previsualización de imágenes es una que a mi me jode mucho, era de mis características preferidas, la mayor parte del tiempo de hecho no usaba un visor de imágenes, pero en la TTY no funciona; si alguien sabe como lograrlo que me lo diga.

(https://camo.githubusercontent.com/d7abd98b23e90b9b4c295e2b15b7150b53cdd5a0/68747470733a2f2f692e696d6775722e636f6d2f4d5057706d6f732e706e67)
El tercer tipo de gestor es ese al que todos estamos acostumbrados y nos muestran la carpeta actual, de ellos el mejor ejemplo que he encontrado es **(https://sourceforge.net/projects/nnn-file-browser/)**; no soy muy fan de ellos y parece que tampoco lo es la comunidad, pero reconozco el potencial de este en particular, si bien como herramienta avanzada deja algo que desear, es insultantemente sencillo e intuitivo, si alguna vez has usado un ordenador sabes usar este gestor. En un entorno en el cual tienes que aprender tantas cosas algo familiar se agradece.

(https://github.com/mananapr/cfiles/blob/master/cf.png)
**(https://github.com/mananapr/cfiles)** es otra opción que usa las Columnas Miller, algo mas sencillo que Ranger, escrito en C, veloz como el Correcaminos (meck meck), sus atajos son muy similares a los de Ranger pero no idénticos, si tienes mucha costumbre con ranger cuidado porque puedes liarla un poquito; ¿resumen?, men encanta, tras el fiasco de ver que Ranger no me muestra las imágenes he encontrado un nuevo amor en brazos de Cfiles... tengo que salir mas. Si he de encontrarle una pega es que no soporta atajos de teclado emacsianos, pero eso ya lo arreglaré en un futuro; otros podrían no encontrar a gusto el cambio en los menús de atajos, a mi no me preocupa, ejercito mas la memoria.

(https://inigo.katxi.org/devel/lfm/lfm-6.png)
Finalmente **(https://inigo.katxi.org/devel/lfm/)** (Last File Manager) es una suerte de primo de GNU Midnight Commander y Nnn, que puedes usar con uno o dos paneles según el caso, es considerablemente mas potente que Nnn y algo mas sencillo de hacerte con el que Midnight Commander; ¿la pega?, ninguna si dejamos de lado que las Columnas Miller son lo mejor. Dado que se trata de un paquete Python puedes instalarlo tirando de su git, de la versión en tus repositorios (de tenerla) o usando Pip.



Música.


Como dijo Nietzsche "La vida sin música seria un error" y desde luego la consola no nos va a privar de este deleite, podrá ser un quebradero de cabeza, verse como el culo en muchas ocasiones e incluso ser un error en lineas generales donde solo un desgraciado quiera meterse... *necesito* salir mas; pero desde luego que no es un error por carecer de música.

(https://upload.wikimedia.org/wikipedia/commons/9/98/Cmus-aamode.png)
Empezamos con **(https://cmus.github.io/)** (Console Music Player), atajos de teclado vimeros, el programa entero se siente muy vimero, ligero como una pluma, sin funciones rebuscadas y relativamente sencillo de usar. A mi personalmente no me gusta, su interfaz me resulta un calvario, pero medio internet pierde el culo por el, así que igual no es para mi pero si para alguno de los lectores.

Vistas:
- `1` biblioteca/reproductor.
- `2` biblioteca simple.
- `3` listas de reproducción guardadas.
- `4` lista de reproducción actual.
- `5` explorador de archivos.
- `6` filtros según los metadatos.
- `7` lista de atajos.
Navegación:
- `j` bajar
- `k` subir.
- `Spc` selecciona.
- `Tab` cambia la ventana.
Listas de reproducción:
- `e` reproduce la canción seleccionada en modo *lista de reproducción* cuando finalice la actual.
- `D` elimina una pista de la *lista de reproducción*.
- `P` mueve arriba la pista en la *lista de reproducción*.
- `p` mueve abajo la pista en la *lista de reproducción*.
Volumen:
- `+` sube el volumen.
- `-` baja el volumen.
Manejo de pistas:
- `b` siguiente pista.
- `z` pista anterior.
- `c` pausa/reanuda.
Utilidades:
- `q` cierra Cmus.
- `7` lista de atajos.
<br>

(https://www.cleeus.de/w/media/postdata/moc-screenshot.png)
Luego tenemos a **(http://moc.daper.net/)** (Music on Console), el cual es el Midnight Commander del audio, panel doble con carpetas a un lado y lista de reproducción al otro, atajos ligeramente emacsianos, temas para personalizar a gusto, fácil de personalizar, bonito de ver e intuitivo de usar. ¿Se nota mucho que es el que uso? Hay que tenerle en cuenta una cosa, hay que invocarlo con el comando `mocp`, parece una tontería, pero se me olvida a menudo.

Navegación:
- `Tab` cambia entre la lista de reproducción y la de archivos.
- Flechas `arriba` y `abajo` para movernos por las listas.
- `Ret` para reproducir un archivo, no es lo mismo reproducirlo en la lista de archivos que en la de reproducción.
Listas de reproducción:
- `a` añade un elemento o directorio a la lista.
- `d` elimina un elemento de la lista.
- `Shift-c` limpia la lista.
Volumen:
- `<` baja el volumen un 1%.
- `>` sube el volumen un 1%.
- `,` baja el volumen un 5%.
- `.` sube el volumen un 5%.
Manejo de pistas:
- `b` pista anterior.
- `n` pista siguiente.
- `Spc` o `p` pausa/reanuda.
Utilidades:
- `q` oculta el reproductor y lo deja funcionando en segundo plano, puedes reabrirlo en cualquier momento invocándolo otra vez.
- `Shift-q` cierra Moc.
- `?` muestra la lista completa de comandos.


(https://camo.githubusercontent.com/72b7d7cf7d80b85dacc4efddb6e47f2c79282d387af017a402e3e5826da75bb4/68747470733a2f2f61736369696e656d612e6f72672f612f3132393734382e706e67)
(https://musikcube.com/), la gracia de este es que es totalmente multi plataforma y que puede configurarse como cliente/servidor, de esa manera puedes controlar un equipo de música desde tu portátil o incluso móvil con Android (ya dije que era multi plataforma), las opciones (https://github.com/clangen/musikcube/wiki/user-guide) esto es síntoma de su gran potencia, pero al mismo tiempo lo hace complicado si lo que buscas es un reproductor de música a secas, aunque he de reconocer que una vez te aprendes sus comandos básicos no es complicado de manejar, además de que los atajos son completamente configurables, de modo que si quieres que cada vez que presiones la tecla `Esc` el equipo de tu casa reproduzca a toda pastilla **¡Hey Macarena!**, puedes hacerlo. Recomendable si vas a usar un equipo de música remoto, o si tienes necesidades que ninguno de los otros cubre o no las cubre con facilidad.

El uso de Musikcube es complejo como ya he dicho, la primera vez que lo iniciemos nos pedirá que seleccionemos un directorio (o directorios) donde ha de buscar la biblioteca de música (seleccionables con la tecla `Spc`) así como realizar algunas configuraciones.

Navegación:
- Con las flechas nos desplazamos por la biblioteca.
- `Ret` para seleccionar una canción.
Volumen:
- `i` sube el volumen un 5%.
- `k` baja el volumen un 5%.
- `m` silencia.
Manejo de pistas:
- `u` retrocede 10 segundos.
- `o` avanza 10 segundos.
- `Spc` pausa o continua la reproducción.
Utilidades:
- `C-D` cierra el reproductor, aunque durante la prueba yo lo hacia a lo bruto con C-c.
- `?` nos muestra los comandos y nos permite editarlos.



Vídeo.

Para **ver videos** contamos con dos opciones, **(https://mpv.io/), (https://mplayerhq.hu/) y (https://github.com/aligrudi/fbff)**, cada una con sus ventajas y desventajas, siendo mi recomendación personal que hagas uso de ellas dependiendo del caso. Primero que todo he de advertir que en ocasiones esto no os funcionará u os funcionará solamente con permisos de administrador, eso es porque tu usuario no pertenece al grupo con permisos para acceder al framebuffer, para solucionarlo solo tienes que usar el comando ` adduser $tu-usuario video`.

(https://i.imgur.com/NjHUtml.jpg)
Empecemos con **MPV**, el principal problema con MPV es, al menos en mi caso, que al trabajar con mas de una pantalla solo se muestra en la de mi portátil y no en los monitores accesorios, esto puede ser usado para sobrellevar el problema que nos da ver videos de esta forma, pues dado que no actúa de esa manera "omnipresente" podemos trabajar en otras cosas mientras vemos un vídeo; también que en caso de que cambies entre una terminal y una sesión de X11 se va a bloquear el ordenador y vas a tener que reiniciar a botonazo limpio; a su favor tenemos que nos muestra de forma predeterminada el vídeo a pantalla completa, con el ratio correcto y a la mejor resolución que de de si tu monitor y el video, esto puede parecer una tontería, pero lo cierto es que es mas complicado de conseguir de lo que parece; si he de elegir una sola opción, yo me quedaría con MPV.

- La forma de hacer que funcione en nuestro framebuffer es con `mpv vo=drm` (tranquilos ese "drm" (https://en.wikipedia.org/wiki/Direct_Rendering_Manager)).
- También podemos mostrarlo en *modo ASCII* y *pseudo ASCII* con `mpv vo=caca` (si, hay una biblioteca para gráficos ASCII llamada así) y `mpv vo=tct` respectivamente.
- Y recuerda que podremos reproducir un vídeo como si fuese un audio con `mpv vid=no video.algo`.
<br>

(http://www.mplayerhq.hu/images/screenshots/framebuffer-01.jpg)
Con MPlayer el tema es un poco distinto, pues si bien requiere de una aceptable dosis de configuración manual (los alias van a ser tu mejor migo en este periplo) y no va a dar un resultado tan *bonito*, lo cierto es que da algo mas de flexibilidad en ciertos escenarios, siendo su principal pega que si nos encontramos en un entorno gráfico X11 cuando este termine la pantalla nos hará cosas raras y tendremos que ir manualmente al una TTY para regresar luego a nuestro entorno X11. Tenemos que tener en cuenta en este caso vario parámetros que habrá que pasarle:

- El primero es nuestro dispositivo de framebuffer, la forma clásica es invocando la ruta `/dev/fb`, es decir fb1, fb0, fb3, etc, pero mas recientemente el dispositivo se llama con `fbdev`, `fbdev0` o `fbdev2`.
- La siguiente opción es opcional y se trata de `-zoom` de la cual no hay mucho que decir, simplemente amplia el video para que ocupe una mayor cantidad de nuestra pantalla.
- Luego podemos pasarle una resolución, esto se hace con el parámetro `-x ` e `-y `para los respectivos ejes.
- La última de todas es también opcional y se trata del ratio del vídeo, esto es útil para que se ajuste mejor a una pantalla determinada, pero puede deformar un poco el aspecto de nuestro vídeo, la invocaremos con el parámetro `-aspect`.
Un comando con todas estas opciones quedaría de la siguiente manera:
`mplayer -vo fbdev2 -zoom -x 1280 -y 720 -aspect 4:3`
Que es la forma en que yo lo uso con el 720 de toda la vida y mi querido ratio de cuatro tercios. Si bien el orden de los parámetros no tiene que ser forzosamente este, dicho orden es el que mejor funciona en mi experiencia; hay que mencionar también la opción `-fs`, esta no funciona en todos los casos y de hecho a mi no me funciona, pero a algunas personas que les da problemas MPlayer pueden solucionarlos anteponiendo esta opción a la opción `-zoom`, en cuyo caso dará problemas con la opción `-aspect` que tendréis que quitar. Como ya he dicho definir *alias* para estos comandos nos será de gran utilidad.
- Finalmente, para poder reproducir solo el audio de un video lo haremos con `mplayer -novideo video.algo`.



Internet.


Empezaré con una aclaración, a no ser que diga lo contrario las opciones que menciono no hacen uso de JavaScript, esto, junto a que prescinden de CSS y otros formatos usados para dejar las webs *bonicas*, hace que la experiencia de navegar por la red con ellos sea increíblemente rápida, también si la seguridad es importante para ti estas de enhorabuena, JS es con diferencia el principal vector de ataque, de hecho prácticamente todo el trabajo que se hace para asegurar los navegadores va encaminado a lograr que esta nefasta basura no se pueda usar para que un cracker se meta en tu ordenador como pedro por su casa; esto tiene una cara B, muchas páginas se obcecan en usar JS para absolutamente todo, y no funcionarán en absoluto sin el. Respecto a las cookies todos estos navegadores pueden iniciarse de forma que no las acepten; pero del mismo modo que en el anterior punto muchos sitios las necesitan para funcionar, así que te encontrarás manejándolas manualmente.

¿Que programas pienso tratar?, navegadores en consola los hay a patadas, es sorprendente como una pieza tan de nicho tiene una oferta tan amplia; yo me centraré en los dos que conozco bien, otros probablemente sean también excelentes, Links, Lynx, Links2 y un largo etc, los menciono por si a alguien le interesase investigarlos; pero con los que yo me encuentro mas a gusto trabajando, los que conozco mas a fondo y por tanto los que puedo recomendar con conocimiento de causa son: (http://w3m.sourceforge.net/MANUAL), que es con diferencia el que mas me gusta; (http://www.elinks.cz/), que toma su puesto en esta lista pues muchas veces hace falta lidiar con el infecto JavaScript, (http://www.netsurf-browser.org/) para los que quieren un navegador como al que están acostumbrados; y finalmente (https://curl.se/) y (https://www.gnu.org/software/wget/), los cuales son muy útiles a la hora de realizar scripts y automatizar tareas.

(https://upload.wikimedia.org/wikipedia/commons/6/62/W3m-wikipedia.png)
(http://w3m.sourceforge.net/MANUAL), otra vez es una de las opciones que recomiendo, lo recomiendo por su amplia opción de controles, por su seguridad, por su flexibilidad y especialmente porque si tenemos instalado el paquete `w3m-img` podremos ver las imágenes insertadas en las páginas, no es el único capaz de hacerlo, pero si uno de los que mejor lo hace. Irónicamente a pesar de venir preinstalado en GNU Emacs, se siente muy *"vimero"* en su uso, pues para introducir texto en un recuadro, por ejemplo en el de un buscador, has de hacer click en el para *"cambiar de modo"*; lo advierto porque aunque parezca una tontería es sencillo que se te olvide y empieces a teclear montando un estropicio mayúsculo. También comento que lo que normalmente conoceremos en otros navegadores como pestañas aquí serán llamados buffers, pues lo cierto es que son exactamente eso.

Movimiento:
- `C-b` atrás (backward).
- `C-f` adelante (forward).
- `C-p` arriba (parent).
- `C-n` abajo (next).
- Buscaremos de forma incremental y reversa con `C-s` y `C-r` respectivamente.
Enlaces:
- Con `TAB` y `M-TAB` saltaremos entre enlaces hacia delante y atrás respectivamente.
- Podremos listar los enlaces de una página con `L`.
- `I` abre una imagen en un visor externo.
- `Esc-I` guardará la imagen.
- `a` guarda un enlace.
Buffers:
- Para abrir la lista de buffers en la ventana actual, lo haremos con la letra `s` y en dicha lista seleccionaremos con `espacio` o las cerraremos con `D`.
- Regresaremos al buffer anterior con `B`.
- Abriremos en un nuevo buffer una nueva URL con `U` o un nuevo archivo con `V`.
- `R` recarga el buffer.
Ventanas:
- Crearemos una nueva ventana con `T`.
Configuración:
- Veremos la *cookies* con `C-k`.
- Veremos el historial con `C-h`.
Utilidades:
- Cambiaremos entre la página presentada y el código de la página con `v`, también podemos editar el código de la página con `E` lo cual invocará nuestro editor.
- Con `M` abriremos la página actual en el navegador secundario (Elinks si sigues mi recomendación), para cuando no nos queda otra que lidiar con esa basura infecta de JS, o mostrar la página renderizada de una manera mas tradicional.
- Con `Esc-i` guardaremos
- Finalmente invocarlo con el argumento `-h`nos dará una lista de las principales opciones.

(https://upload.wikimedia.org/wikipedia/commons/2/2b/Elinks-screenshot-of-elinks-page.png)
(http://www.elinks.cz/documentation/manual.html), para cuando no puedes escapar de las garras de JS:

Movimiento:
- `C-p` arriba.
- `C-n` abajo.
- `C-f` avanza una "página".
- `C-b` retrocede una "página".
- `RePag` y `AvPag` retroceden y avanzan una *"página"*.
- `C-a` vamos al comienzo de la página.
- `C-e` vamos al final de la página.
Enlaces:
- `d` descarga el enlace seleccionado.
- La flecha arriba selecciona el enlace anterior.
- La flecha abajo selecciona el enlace siguiente.
- `Ret` (Enter) abre el enlace seleccionado.
Utilidades:
- `g` nos permitirá introducir la dirección de la página que deseemos visitar.
- `h` nos muestra el historial.
- `D` abre el gestor de descargas.
- `q` cierra Elinks.
Pestañas:
- `t` abre una nueva pestaña.
- `T` abre el enlace en una nueva pestaña.
- `c` cierra la pestaña actual.
- `e` abre el menú de pestañas.
- `>` pestaña siguiente.
- `<` pestaña anterior.
- `M->` mueve la pestaña a la derecha.
- `M-<` mueve la pestaña a la izquierda.


(http://www.netsurf-browser.org/about/screenshots/images/framebuffer-netsurf.png)
Eso ^ es **(http://www.netsurf-browser.org/)**, no no estoy de broma, con su puntero y todo; supongo que no hará falta chuleta con este. Dado que las ventajas son evidentes destacaré las desventajas, es mas pesado que las anteriores opciones, usa un mayor ancho de banda, no funciona tan espeluznantemente bien con conexiones lentas y requiere mas recursos, cosas que eran de esperarse; pero sobre todo es un asesino de productividad. Ideal para cuando tienes que lidiar con JS complejo, o para cuando quieres perder el tiempo como cuando usas el entorno gráfico. Recomendable incluso si quieres usar el entorno gráfico con una máquina de pocos recursos.

No creo que haga falta que lo diga, pero por si acaso lo hago, nunca, nunca jamas de los jamases, uses un navegador, ya sea gráfico o en modo texto, como super usuario; hay idiotas, luego está el dodo y finalmente los que corren un navegador con privilegios de super usuario, ¿eres mas tonto que un dodo?, ¿no?, pues no lo hagas.

Wget y Curl, dos utilidades clásicas de los magos de la consola; dos herramientas increíblemente poderosas, con las que, cual hechiceros en sus torres, estudiando arcanos tomos de *manpages*, podemos conjurar poderosos hechizos y crear pócimas milagrosas con las que doblegar los poderes de la red; blah blah blah, mucha chachara para deciros que son la poya con cebolla... -_- y ahora no se como deciros que no se me ocurre como diablos resumir su uso sin que parezca un chiste; puedo explicar la sintaxis básica, cosa que ya hacen las cinco primeras líneas de sus respectivos *manpages*, puedo ponerme un poco mas extenso, y entonces acabo copiándolas (de verdad, es el tercer intento que hago, pasadme esta anda); en estos dos casos no hay chuletas que valgan. Leete los man, juguetea un poco con estos programas, haz experimentos, déjate crecer la barba si eres un tio y ponte un cucurucho en la cabeza, o cómprate un sombrero de punta y una escoba si eres una tia; el verdadero poder viene de la mano del estudio. O pasa de esto y *copypastea* comandos que te encuentres por la *intelné*.

¿Y que hay de los vídeos?, pues con la salvedad de algunas oscuras páginas que se dedican a recopilar material filmográfico sobre el apareamiento humano **(https://youtube-dl.org/)** va a hacer su trabajo, puedes descargar lo que te aparezca y verlo luego con un reproductor, o puedes pasar a cualquiera de los reproductores ya mencionados la url del vídeo en cuestión como si de un archivo mas en tu computadora se tratase.



Correo electrónico.


Esta es una sección muy difícil de hacer, pero al mismo tiempo la que menos mérito tiene. Hay muchas opciones, usar una u otra va a depender completamente de tus gustos ya que no hay un baremo objetivo con el cual decir que una es mejor para esto o para lo otro; todas so muy parecidas y al mismo tiempo completamente diferentes. Como ya he dicho esta sección es la que menos valor tiene, pues me he limitado a recopilar las mas populares, probarlas y hacerles una chuletas con un escueto comentario. No puedo dar una recomendación consistente, elegir una u otra va a depender por completo de con cual te sientas mas a gusto.

(https://upload.wikimedia.org/wikipedia/commons/a/a1/Mutt.png)
**(http://www.mutt.org/)**, el mas popular por lo que se ve; puedes encontrar una (https://www.cs.uky.edu/docs/users/mutt-cheat-sheet.html).

Movimiento:
- `Tab` salta al siguiente correo.
- `Ret` (Enter) muestra el mensaje seleccionado.
- Flechitas para el resto.
Redactar correos:
- `m` redactar un correo nuevo.
- `r` responde al remitente.
- `g` responde a todos los receptores.
- `L` responde a la lista de correo.
- `f` reenvía un correo.
- `a` añade un archivo adjunto.
- `d` desadjunta un archivo.
- `s` edita el destinatario.
Gestión de correos:
- `d` eliminar el correo actual.
- `u` deshaz la eliminación del correo.
- `C` Copia el correo a otro buzón.
- `s` guarda el correo actual.
- `/` busca un correo.
- `M-/` busca de forma reversa un correo.
Marcar:
- `c` ir a otro buzón o carpeta.
- `F` marcar como importante
- `v` ver los archivos adjuntos.
Visualización:
- `o` cambia el método ordenar los correos.
- `O` invierte el orden en que se muestran los correos.
<br>

(https://upload.wikimedia.org/wikipedia/commons/f/fc/Alpine-2.00.png)
**(http://alpine.x10host.com/alpine/)**, dicen que es muy amigable con los novatos y la verdad que tienen razón, entiendo a la perfección que su sistema de menús es muy sencillo de manejar y aprender, pero a mi personalmente se me hace incómodo de usar. El ya mencionado sistema de menús donde te indica que presionar para hacer que cosa en cada momento, hace también que una chuleta sea imposible de hacer e innecesaria.


(https://sup-heliotrope.github.io/)
**(https://sup-heliotrope.github.io/)**, este si tiene una ventaja objetiva por lo que se ve, está diseñado para gestionar grandes cantidades de correo; no tengo tanto tráfico de correo como para que me resulte apreciable su utilidad. Muy complicado y no he conseguido hacerme con el.

**Bonus (https://notmuchmail.org/)**, este no es un cliente de correo propiamente dicho, se trata de una suerte de gestor de correo que te permite lidiar con grandes cantidades de el, te da las ventajas de Soup, pero con cualquier otro cliente. Como ya he dicho, no tengo bastante tráfico como para poder apreciar esta pieza de software, pero me parece interesante.

Estoy seguro de que hay otros muy muy buenos, de hecho he descartado varias opciones a la hora de decidirme cuales probar, pero ya he hecho mi existencia bastante miserable durante dos semanas, como para prolongar esta agonía probando mas cosas que no voy a utilizar (vivo muy a gusto con Gnus en Emacs).



Torrent.


Para mi el torrent es muy importante, no se si para ti lo será, pero a mis ojos se trata de un baremo para saber que tan bien está la sociedad, que tanto quieren compartir, que cosas desean compartir, etc, siendo también una expresión pulcra y hermosa de la libre asociación y el trabajo colaborativo; visto como está la red así nos va. Es por ello que en este artículo no podía faltar una sección dedicada al mismo y que me odio un poquito por no haberme acordado antes de el. Las opciones son muchísimas, pero yo me centraré en **(https://transmissionbt.com/)** en su modo de linea de comandos, **(https://rtorrent-ps.readthedocs.io/en/latest/)** y **(https://aria2.github.io/)**.

(https://raw.githubusercontent.com/rndusr/stig/master/screenshot.png)
**(https://transmissionbt.com/)** me gusta y es mi preferido por aunar bien sencillez y potencia, tener front-end para aburrir y poder integrarlo en la red i2p; también por (https://github.com/holomorph/transmission), no siendo esta la única opción que tenemos para manejarlo, tenemos también (https://github.com/rndusr/stig) que es la que ilustra esta sección y (https://github.com/tremc/tremc), pero si prefieres ir a comando puro y duro te dejo (https://cli-ck.io/transmission-cli-user-guide/) para complementar las *man*.

(https://rtorrent-ps.readthedocs.io/en/latest/_images/rT-PS-1.0-301-g573a782-2018-06-10-shadow.png)
**(https://rtorrent-ps.readthedocs.io/en/latest)**, rico en funciones, sencillo de usar y se ve... creo que la imagen habla mejor que yo de como se ve, es un programa que me extraña no ver mas en los hilos de *unixporn*. Se trata básicamente de un fork del popular (https://github.com/rakshasa/rtorrent) con algunas mejoras visuales y una configuración predeterminada que no apesta, por lo demás son iguales.

**(https://aria2.github.io/)** es muy ligero, soporta verificación de archivos con Metalink, descargas multi-conexión y no es solamente un gestor de torrents, maneja también descargas con los protocolos HTTP/HTTPS y FTP/SFTP. La pega que tiene Aria2 es su carencia de un *frontend* en línea de comandos, solamente (https://github.com/ziahamza/webui-aria2); es por ello que toca tirar de (https://aria2.github.io/manual/en/html/aria2c.html), la cual es exteeeeeeeeensa.



Gestores de "ventanas".
-

Si bien el nombre adecuado para ellos es "multiplexador de terminales", a efectos prácticos lo que son es el antepasado de los últimamente tan de moda gestores de ventanas en mosaico. Como opciones tenemos tres distintas, las dos primeras son (https://github.com/tmux/tmux/wiki) y (https://www.gnu.org/software/screen/), la tercera es (https://www.byobu.org/) que actúa como una suerte de frontal para simplificar el uso de uno o ambos de los anteriores y finalmente (https://github.com/martanne/dvtm) que básicamente es el popular gestor de ventanas DWM para la terminal. Cual usar va a depender enteramente de tus gustos personales, sinceramente pienso que no hay argumentos razonables en favor de uno u otro, tendrás que probarlos y elegir uno de ellos. O también puedes pasar por completo de ellos y usar las TTYs que trae tu distro, F1, F2, F3, etc.

En otro orden de cosas, habrán los lectores de perdonar mi uso de cierta terminología propia del entorno de Emacs (bastante me contengo no listándolo como una opción, no seria la primera persona que lo usa de ese modo), quiero tener una cierta coherencia entre mis escritos y me parece mas precisa de lo que es la terminología mas común; en esta terminología **buffer** es una ejecución, por ejemplo de una terminal, un documento abierto, o un reproductor de música; una **ventana** es por contra una sección de la pantalla donde se muestra un *buffer*; y finalmente un **frame** o **marco** es una agrupación con una o mas ventanas, similar en cierto modo a los escritorios virtuales que todos conocemos actualmente, los cuales derivan de hecho de sistemas como este y tienen gran presencia en la terminal pura donde este modelo ha sobrevivido mas intacto que en el escritorio.


(https://upload.wikimedia.org/wikipedia/commons/5/50/Tmux.png)
Los controles básicos de **Tmux** se invocan con **`C-b`** y son:
- `C-b "` para dividir el area horizontalmente y crear un nuevo buffer/ventana.
- `C-b %` para dividir el area verticalmente y crear un nuevo buffer/ventana.
- Con `C-b` y las `flechas`, nos movemos entre las ventanas.
- `C-b x` cierra la ventana actual y su buffer.
- `C-b c` crea un nuevo marco.
- `C-b n` cambia al siguiente marco.
- `C-b b` cambia al marco anterior.
- `C-b &` cierra el marco actual.
- `C-b ESP` cambiará la distribución de ventanas a la siguiente plantilla.
- `C-b C-"flechas"` nos redimensionará la ventana actual en una columna o línea por pulsación.
- `C-b M-"flechas"` nos redimensionará la ventana actual en cinco columnas o líneas por pulsación.
- `C-b ` pega el texto copiado.
- `C-b ?` nos mostrará la ayuda.

` pega el texto copiado.
- `C-a ?` invocará el menú de ayuda.
- `C-a x` o `C-a C-x` bloqueará la sesión, requiriéndose una contraseña para reanudarla (una gran ventaja cuando comparamos Screen a las otras opciones), el problema es que la configuración de nuestras ventanas desaparecerá quedándose solo una, si alguien tiene la solución a este problema le ruego que la comparta conmigo.
- `C-a ` cerrará todas las ventanas y procesos, y saldrá de Screen.
Esto trata de ser una colección de recomendaciones y chuletas básicas, en todas las aplicaciones hay funcionalidades avanzadas. Hay no obstante una cosa avanzada que si necesito mencionar de Screen, su consola de comandos interna, esta se invoca con `C-a :` y no la voy a tratar mas que para mencionar su uso en redimensionar las ventanas; para ello haremos uso del comando `resize`, seguido de los argumentos para indicar si queremos que dicha redimensión sea horizontal `-h`, vertical `-v` o general `-l`, el argumento para indicar si queremos incrementar o disminuir el espacio `+` y `-` respectivamente, seguido finalmente de una cantidad de columnas/lineas o de un percentil. Por ejemplo, la secuencia para incrementar una división horizontal en 10 líneas quedaría como: `C-a :` seguido de ` resize -v +10`.

(https://upload.wikimedia.org/wikipedia/commons/2/2a/Terminal_screen_of_nijaba.png)
Una de las gracias de Byobu es su capacidad de mostrarnos una bonita barra del sistema, con cositas como un reloj, indicadores de correo, batería, marcos y un largo etc, es por ello que si bien te dejaré aquí la chuleta, si finalmente te decides por el te recomiendo que empieces con ` pega el texto copiado.
- `S-F12` habilita y dehabilita los atajos de teclado.
- `F9` entra al menú de configuración.
- `F12` bloquea la terminal.
<br>

(https://raw.githubusercontent.com/martanne/dvtm/gh-pages/screencast.gif)
**`.

Dvtm merece un párrafo a parte ya que no se parece en lo mas mínimo; su formula es redirigirvolcar el historial a un editor externo con `C-g e` (admite atajos de vimeros e emacsianos), una vez en el seleccionar lo que prefieras, lo que selecciones estará entonces listo para copiar con `C-g p`.
<br>


Scroll.


Otro tema que es muy útil es la capacidad de hacer *"scroll"*, es decir, manejar una salida mas grande de lo que nuestra pantalla es capaz de mostrar; si bien la vieja confiable de `less` puede acudir en nuestra ayuda, andar invocándola todo el tiempo puede ser tedioso y en ciertos casos inoportuno o impracticable, para ello hay diversas soluciones que se pueden usar.

Por un lado tenemos la combinación de `Shift-RePag/AvPag` para ir arriba y abajo respectivamente, el problema es que esta característica no siempre estará disponible, pues ha sido eliminada en las últimas versiones del kernel, es con diferencia la mas cómoda y una pena que se eliminase. Espero que su eliminación del kernel sea cosa de RH, ningún jurado me condenaría en tal caso >:^(. Mientras esperamos a que alguien con buen conocimiento de C decida mantener estas utilidades en el kernel, estos mismos atajos están disponibles con Byobu y Dvtm. Esta solución es a mi parecer la mas indicada para principiantes y la mas cómoda.

Con Tmux y GNU Screen tendremos que hacer uso del modo copia al que se accede en en Tmux con `C-b [`, y hacemos uso de `C-u` y `C-d` para ir arriba y abajo respectivamente; con Screen usaremos `C-a [` o `C-a Esc` que es algo mas cómodo y nos moveremos con los atajos normales, en ambos casos saldremos con el atajo `q`. Esta es la solución mas incomoda para mi gusto, especialmente al principio, pero en no mucho tiempo acabas haciéndote con ella y entonces es mucho mas potente.



Ratón.


Si echas mucho de menos el **ratón**, igual lo que necesitas en un ratón, ¿no?, pues eso existe y de hecho hay dos opciones, sus nombres son **(https://github.com/telmich/gpm)** y **(https://salsa.debian.org/consolation-team/consolation)**. GPM puedes incluso programarlo para enviar comando cuando presiones una de sus teclas tres veces en rápida sucesión, pero carece de la capacidad de hacer scroll que Consolation si tiene.

Su uso no puede ser mas sencillo, para iniciarlos y pararlos se hace como con cualquier otro servicio ` service gpm/consolation start/stop`; para seleccionar una cadena de texto solo tienes que hacer clic con el puntero y arrastrar, o bien hacer clic izquierdo para iniciar la selección y clic derecho para terminarla, luego para pegar solo tienes que hacer click con el botón central en el lugar de destino, con Consolation la rueda del ratón nos desplaza igual que en el entorno gráfico, funcionan entre TTYs e incluso entre distintos programas en distintos multiplexadores.




Entradas similares:
Re: Viviendo en la terminal. 1ª Parte
1-5-2021 08:27

Extenso y detallado artículo, vaya.


Sobre aplicación de terminal en sí, ¿cuáles recomiendas? Yo uso en mac iTerm2 y me gusta, pero en linux no estoy decidido.

En cuanto a torrent, un poco off-topic pero me ha venido a la mente: siempre ha sido para mí un problema que sea una red que no permita búsqueda en sí misma, dependiendo para ello de webs que muchas veces no me ofrecen ninguna confianza. ¿Qué usas tú? Yo lo que hago es usar aMule, porque su red sí que permite búsqueda, bien en servidores o bien en la red kad.


Re: Viviendo en la terminal. 1ª Parte
3-5-2021 10:56
Por Taraak
En Mac no tengo ni la menor idea, pero en GNU/Linux el mejor emulador de terminal que he usado es Kitty, tiene su propio sistema de pestañas y se puede extender de muchas formas.

En el tema de torrents, pues yo uso principalmente "FrozenLayer" para anime y doramas coreanos; para películas y series normales en español "Mejortorrent", ten cuidado porque este lo tiran cada cierto tiempo y regresan con dominios ligeramente distintos, también hay un dominio que intenta suplantarlo; finalmente para cosas que no encuentro en esos sitios PirateBay, la vieja confiable y el señor Don Pato (duckduckgo.com). Con EMule sencillamente nunca me hice.