253 - Kitty, el mejor terminal para Linux

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

1:25
-3:15

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 del mundo mundial

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 archivos ranger, al que le tengo que dedicar algún episodio del podcast. Te recomiendo que utilices el siguiente alias,
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 utilizar tmux. Pero no solo esto, sino que además puedes configura diferentes disposiciones. Para abrir un nuevo terminal, simplemente Ctrl+Mayusc+Enter. Y para moverte entre terminales Ctrl+Mayusc+j y Ctrl+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 teclado Ctrl+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 teclas Ctrl+Mayusc+e, y en el caso de que hayan urls 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, utilizando Ctrl+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ña
  • Ctrl+Mayusc+q cierra pestaña
  • Ctrl+Mayusc+derecha siguiente pestaña
  • Ctrl+Mayusc+izquierda anterior pestaña

Algunos atajos de teclado para ventanas,

  • Ctrl+Mayusc+Enter nueva ventana
  • Ctrl+Mayusc+w cierra ventana
  • Ctrl+Mayusc+j siguiente ventana
  • Ctrl+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 portapapeles
  • Ctrl+Mayusc+v pegar del portapapeles
  • Ctrl+Mayusc+u insertar un carácter unicode
  • Ctrl+Mayusc+e hacer clic en una url utilizando el teclado
  • Ctrl+Mayusc+F2 edita la configuración de kitty
  • Ctrl+Mayusc+escape abre una kitty 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 terminal
  • diff para comparar archivos, incluyendo imágenes
  • unicode input para introducir caracteres unicode
  • Hints te permite seleccionar texto
  • Remote 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ón ls --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 utilizando Ctrl+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 en tmux, 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

6 comentarios en “Kitty, el mejor terminal para Linux

  1. LU
    Luis hace 3 años

    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

  2. GE
    Gerardo hace 2 años

    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.

    1. AT
      atareao hace 2 años

      Vaya pues es cierto… no recordaba que lo hubiera hecho.
      Lo añado en las notas.
      Muchas gracias por tu comentario.
      Saludos.

    2. BE
      Benhumea hace 2 años

      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

    3. BE
      Benhumea hace 2 años

      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

  3. MI
    Miguel hace 2 años

    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

Responder a Luis Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *