Sin comentarios

Haciendo una terminal

Tiempo estimado de lectura: 3 minutos.

Una terminal es una app muy sencilla, solo recibe una entrada y devuelve una salida del shell, pero no, no es sencilla.

Uso la terminal todo el tiempo, mas que nada la abro en fullscreen y ejecuto un Tmux que se guarda automáticamente. Para eso uso la terminal de Ubuntu, GNOME Terminal. Todo venía bien hasta que tuve ganas de usar fuentes con ligaduras, como por ejemplo la fuente FiraCode.

Me propuse buscar alguna alternativa:

Ya que no estoy interesado en que tenga tabs, ni configuración ni nada raro me propuse a hacer una. ¿Qué tan difícil puede ser? Bueno por empezar, hay que parsear el input. Fácil. Excepto que el input no es sólo texto, sino cualquier tecla que apretas. Luego hay llamás al shell. No momento, al custom shell que tiene el usuario. Bien, esta en la variable SHELL del environment.

Ahora si, ejecutamos y tomamos el output y listo. No, hay que parsear los colores. Pero podríamos usar una librería como VTE (Virtual Terminal Emulator). Ah no, no soporta ligaduras. Entonces hay que parsear algo como \e[33;1m y convertirlo en color de la letra o del fondo, o si es negrita o si esta subrayado. Todo eso hay que parsearlo a mano. Ah y eso no es suficiente, en realidad hay que hacer un master de pseudoterminal que se comunicará con un slave, esto lo podés hacer con PTY. Ah ¿y el scroll? ¿y el historial? Conclusión, no, no es para nada sencillo hacer una terminal. Tal vez algún otro día.

La Ilustración es de Katerina Limpitsouni publicada en unDraw.

Publicado por Albo el jueves 22 de febrero del 2024 en Programacion.