253 - Kitty, el mejor terminal para Linux
kitty es sin lugar a dudas el mejor terminal para Linux, y te cuento como sacarle el máximo partido y ser mas productivo con este terminal
Hace apenas un mes, unos doce capítulos, en concreto en el episodio 241, en el que te hablaba de terminal hopping y sobre porque había abandonado Alacritty en favor de rxvt-unicode. Pues, vuelvo de nuevo a las andadas, vuelvo de nuevo al terminal hopping. Y no te creas que fue mucho después de publicar el anterior episodio del podcast, quizá tan solo un par de semanas. En tan poco espacio de tiempo ya le estaba hablando a Angel de uGeek, de esta auténtica maravilla, ya le estaba hablando sobre Kitty el mejor terminal para Linux del mundo mundial.
Antes de seguir, e insistir en esto de Kitty el mejor terminal para Linux del mundo mundial, tengo que aclararte, que esto significa, que en el momento de publicar este episodio del podcast, este emulador de terminal, es el mejor terminal para Linux pero para mi. Esto no quiere decir, nada en absoluto. Es decir, es posible, que dentro de un tiempo, te traiga otro terminal. Y aún con todo y con esas, también puede suceder, que tu pruebes este emulador de terminal, y te acuerdes de mi estampa, porque a ti no te resulta atractivo, o simplemente, porque no es lo que estás buscando.
Kitty, el mejor terminal para Linux
Para los ansias
Aunque kitty se encuentra en los repositorios oficiales de Ubuntu, y seguro que en los de la mayoría de distribuciones, lo mejor es que lo descargues directamente para tener la última versión y poder de esa forma disfrutar del mejor terminal para Linux con todas las características que te voy a contar a lo largo del episodio.
Para hacer esto ejecuta la siguiente instrucción en un terminal,
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
Esto instala kitty en el directorio ~/.local/kitty.app
. Yo no me he calentado en exceso la cabeza y he hecho un enlace simbólico,
sudo ln -s /home/lorenzo/.local/kitty.app/bin/kitty /usr/bin/kitty
Para que se integre perfectamente con tu escritorio, tienes que ejecutar además las siguientes instrucciones,
cp ~/.local/kitty.app/share/applications/kitty.desktop ~/.local/share/applications
sed -i "s|Icon=kitty|Icon=/home/$USER/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png|g" ~/.local/share/applications/kitty.desktop
Una vez completados estos pasos, ya puedes iniciar una sesión con kitty, y empezar a disfrutar de todas las características que te voy a comentar.
Características del mejor terminal para Linux
Kitty es simplemente espectacular, y por eso le he llamado el mejor terminal para Linux. Las características que te ofrece, no creo que las puedas encontrar en otro terminal.
- Para el renderizado utiliza la GPU, lo que descarga el sistema por un lado, y por otro consigue desplazamientos mucho mas suaves. Según los propios desarrolladores de la aplicación hacer scroll es suave como la mantequilla. Además para mejorar esto, utiliza hilos para minimizar la latencia.
- Imágenes. Si lo que estas leyendo, puedes ver imágenes directamente en el terminal. Sin salir del propio terminal. Para esto tienes varias herramientas, empezando por el propio
Kitty
. Pero no solo esta, también puedes utilizar el gestor de archivosranger
, al que le tengo que dedicar algún episodio del podcast. Te recomiendo que utilices el siguientealias
,
alias icat="kitty +kitten icat"
- Puedes ir mas allá de los tradicionales 256 colores y llegar al color verdadero con color 24 bit. Si quieres ver un ejemplo de esto simplemente tienes que ejecutar la siguiente instrucción en un terminal.
curl https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh | bash
- ligaduras en fuentes. Esto es una auténtica maravilla, sobre todo si escribes código en un editor como Vim.
- kitty soporta enlaces. Pero no solo es que soporte enlaces, sino que además puedes definir las acciones a realizar con determinado tipo de archivo. Esto, no se porque no he conseguido ponerlo todavía en funcionamiento.
- Permite abrir varios terminales en uno, al igual que haces con
tmux
, pero sin la necesidad de utilizartmux
. Pero no solo esto, sino que además puedes configura diferentes disposiciones. Para abrir un nuevo terminal, simplementeCtrl+Mayusc+Enter
. Y para moverte entre terminalesCtrl+Mayusc+j
yCtrl+Mayusc+k
. - Puedes controlar kitty desde scritps. Esto te permite desde abrir nuevas ventanas, o enviar texto entre ventanas, o incluso utilizar
pipes
para que la salia de un comando que se ejecuta en una ventana vaya a otra ventana. - Si con esto tienes poco, indicarte que es posible extender la funcionalidad de kitty utilizando
Kittens
que no son, ni mas ni menos, que pequeños programas. Entre ellos tienes uno que te permite escribir con facilidad caracteres unicode, como pueden ser los emojis. Para esto, simplemente utilizar el atajo de tecladoCtrl+Mayusc+u
- Si estás acostumbrado a Vimium, ese complemento disponible en Firefox y Chrome que te permite navegar con los dedos, en kitty, tienes una característica similar que te permite también hacer esto, llamada
Hints
. Utiliza la combinación de teclasCtrl+Mayusc+e
, y en el caso de que hayanurls
en el terminal, se mostrará en la línea correspondiente un número, de forma que al pulsarlo abrirá un navegador y te llevará a esa dirección. Pero no solo te permite esto, sino que además puedes copiar directamente un archivo o una ruta, utilizandoCtrl+Mayusc+p f
- Otra interesante herramienta, otro
Kitten
, que trae kitty es la posibilidad de mostrar la diferencia entre dos archivos, que pueden ser tanto archivos de texto como imágenes. - Es casi multiplataforma, y digo casi, porque permite tanto Linux como MacOS, pero no permite Windows.
- Tienes la posibilidad de configurar el inicio de tus sesiones con kitty, indicando que ventanas, pestañas, aplicaciones, etc, que quieres que aparezca cuando se inicie tu sesión.
- Al igual que Vim, kitty pone a tu disposición diferentes portapaples para hacerte la vida del copiar y pegar mucho mas sencilla.
La filosofía de Kitty
kitty está diseñado para usuarios de teclado. Para aquellos que utilizamos el teclado de forma masiva y en detrimento del ratón. Aquellos que preferimos no levantar los dedos del teclado. Y eso que el ratón está perfectamente integrado.
La configuración de kitty, como ya te puedes imaginar es un archivo de texto plano, y como consecuencia de ello, es carne de cañón, para tus dot files.
Como me gusta informarte, indicarte que kitty está implementado en C
para aquellas partes que requieran de un gran rendimiento, y en Python
para aquellas partes que requieran ser hackeadas, sobre todo la parte referente a la interfaz.
Pestañas y ventanas
Como no podía ser de otra forma, kitty soporta tanto pestañas como ventanas. Jerárquicamente las que mandan son las pestañas, de forma que en una pestaña puedes encontrar varias ventanas.
Además, las ventanas se organizan en diferentes disposiciones o layouts. Actualmente existen siete disposiciones básicas, y puedes cambiar entre cada una de esas disposiciones utilizando el atajo de teclado Ctrl+Mayusc+l
,
Stack
. Se muestra una única ventana.Tall
. Una ventana a la izquierda y el resto a la derecha.Fat
. Una ventana en la parte superior y el resto en la parte inferior.Grid
. Las ventanas se organizan en forma de rejilla.Split
. Tu lo organizas como quieres.Horizontal
. Las ventanas se muestran una al lado de la otra.Vertical
. Igual que el anterior, pero, en este caso, una encima de la otra.
Indicarte que es posible redimensionar las ventanas utilizando el atajo de teclado Ctrl+Mayusc+r
.
Algunos atajos de teclado para las pestañas,
Ctrl+Mayusc+t
nueva pestañaCtrl+Mayusc+q
cierra pestañaCtrl+Mayusc+derecha
siguiente pestañaCtrl+Mayusc+izquierda
anterior pestaña
Algunos atajos de teclado para ventanas,
Ctrl+Mayusc+Enter
nueva ventanaCtrl+Mayusc+w
cierra ventanaCtrl+Mayusc+j
siguiente ventanaCtrl+Mayusc+k
anterior ventana
Algunos atajos de teclado interesantes
Además de los atajos de teclado que te he comentado anteriormente para gestionar pestañas y ventanas, como te puedes imaginar, kitty viene cargado, con todo un arsenal de otros atajos de teclado para hacer casi cualquier cosa que quieras imaginar. Así, los imprescindibles son los siguientes,
Ctrl+Mayusc+c
copiar al portapapelesCtrl+Mayusc+v
pegar del portapapelesCtrl+Mayusc+u
insertar un carácter unicodeCtrl+Mayusc+e
hacer clic en unaurl
utilizando el tecladoCtrl+Mayusc+F2
edita la configuración de kittyCtrl+Mayusc+escape
abre unakitty shell
. Aquí puedes hacer todo lo que quieras con todos tus terminales kitty, eso si, necesitas conocer como trabajar con este shell tan particular*. Con este fin, que mejor que recurrir a la ayuda.
Kittens
Esta es una potente herramienta que te permite desde añadir nuevas características a kitty
hasta crear tus propias aplicaciones. Algunos de estos Kittens, ya te los he ido comentado con anterioridad, y otros son nuevos,
icat
muestra imágenes en el terminaldiff
para comparar archivos, incluyendo imágenesunicode input
para introducir caracteres unicodeHints
te permite seleccionar textoRemote file
puedes editar, abrir o descargar un archivo vía SSH. Para que esto te funcione, necesitas tener una de las últimas versiones de kitty. Esto es brutal, simplemente tienes que entrar en una sessión vía ssh y listar los archivos que allí se encuentran con la opciónls --hyperlink=auto
. Cuando hagas clic sobre uno de los archivos te indicará las opciones que tienes.Hyperlinked grep
te permite buscar en el interior de los archivos. Una vez tengas los resultados, solo tienes que hacer clic en cellos utilizandoCtrl+Mayusc
y se abrirá en tu editor preferido.Broadcast
una herramienta fundamental. Esto te permite que lo que escribas se escriba de forma simultánea en varias ventanas. Esto es algo que suelo utilizar con frecuencia entmux
, pero aquí, en kitty me gusta mas como está implementado. Aquí no escribes directamente en una de las ventajas, sino que se crea una nueva ventana para ello. En la configuración de kitty, incluye lo siguiente,
map F1 launch --allow-remote-control kitty +kitten broadcast
Clipboard
te permite acceder al portapapeles desde kitty.
Estos son algunos de los Kitten que vienen implementados por defecto, pero no son los únicos. Además, y por supuesto, tu puedes crear los tuyos propios para mejorar tu flujo de trabajo.
El ratón
Como te decía, aunque kitty está pensado para usuarios con un uso intensivo del teclado, tiene una espectacular integración con el ratón. Integración hasta límites insospechados.
Ctrl+Mayusc+clic
abres un enlace en el navegador- Con doble clic seleccionas una palabra pero si arrastras seleccionas mas
- Con triple clic seleccionas la línea completa, y también puede arrastrar
- Utilizando clic derecho extiendes la selección
Ctrl+alt
te permite seleccionar columnas
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de MIKHAIL VASILYEV en Unsplash
Buenas! Lo primero enhorabuena por el blog, en general, muy interesante.
Soy usuario casi exclusivo de Gentoo y de la terminal, el 90% de lo que tengo que hacer pasa por ahí. Kitty está muy bien como emulador de terminal GL, es rádipo, extensible y superconfigurable. LLevo utilizándolo mucho tiempo y sobrevive en mi sistema a falta de un terminalGL más rápido. Hace poco también ví que hiciste un post sobre rxvt (supongo que lo pones en modo servidor y le conectas terminales clientes).
Bien, por todo ello seguramente te vas a llevar un buen susto cuando pruebes el emulador de terminal «foot» el cual uso como principal (kitty como secundario), ya que no es terminalGL, pero es suckless en la forma que es minimalista, ultraconfigurable y rápido, y no sólo eso, sino que tiene opciones interesantes como por ejemplo ser configurado como servidor y cliente, cosa que hace mínima la huella de recursos. Otra característica es que el tratamiento de de los glyfos es diferente y por lo tanto la representación de las fuentes. No te voy a dar más datos, pues sé que vas a investigar por tu cuenta y te animo mucho a que lo pruebes ya que llevas una buena racha pasando por terminales y creo que éste precisamente no va a pasar desapercibido. Ahora, es nativo de Wayland:
https://codeberg.org/dnkl/foot
Y ya que me he decidido a escribirte, comentarte también que por otro lado me gustaría que probaras Zathura, es un lector de pdf rápido, minimalista y ultraconfigurable, otra maravilla que debería ser conocido en tu entorno.
Un saludo
Estimado Lorenzo. Genial tu video. pero el ranger no me desplegaba las imágenes como a ti. Y creo que es por que falta la configuración de esto. en ~/.config/ranger/rc.config (yo lo tuve que crear el archivo) y agregar estas líneas
set preview_images true
set preview_images_method kitty
re-arrancar la terminal o escribir bash
Y ahora si, funciona como en tu video.
Vaya pues es cierto… no recordaba que lo hubiera hecho.
Lo añado en las notas.
Muchas gracias por tu comentario.
Saludos.
El archivo necesario a crear es rc.conf
Lo podemos realizar con la siguiente linea
echo » set preview_images true \n set preview_images_method kitty » > ~/.config/ranger/rc.conf
El archivo necesario a crear es rc.conf
Lo podemos realizar con la siguiente linea
echo » set preview_images true \n set preview_images_method kitty » > ~/.config/ranger/rc.conf
Buenos días Lorenzo,
Algo que tenía pendiente es probar kitty como terminal principal y por fin lo tengo en el equipo del trabajo.
Un problema que es habitual y con el que me he encontrado es el siguiente al hacer ssh a un servidor y lanzar un comando:
Error opening terminal: xterm-kitty.
Esto se soluciona lanzando un ssh al servidor:
kitty +kitten ssh usuario@ip
Pero el problema es cuando escalas privilegios, que te da el mismo error y por seguridad el ssh a root está desactivado.
Para solucionar esto podemos añadir una línea a nuestra configuración o de .bashrc o .zshrc, depende del uso:
export TERM=xterm
Por si le sirve a alguien 😉
Gracias por tu blog, me «obliga» a probar cosas nuevas.
Un saludo.
Miguel