Cuando paso varias horas trabajando con Linux, la terminal termina siendo mi centro de operaciones. En una pestaña tengo una conexión SSH, en otra consulto contenedores Docker y, mientras tanto, necesito otra consola para editar archivos o ejecutar un playbook de Ansible. Kitty me permite organizar todo esto sin llenar el escritorio de ventanas.
En esta guía voy a mostrar cómo lo instalo, configuro y utilizo. Además de los comandos, he incluido esquemas de los layouts y una chuleta de atajos que se puede consultar directamente desde el blog.
Sobre los atajos: las combinaciones indicadas como predeterminadas corresponden a la configuración documentada de Kitty para Linux. Si utilizamos atajos propios o el compositor (Hyprland, KDE, etc.) captura una tecla, el resultado puede ser diferente. Los atajos personalizados aparecen señalados como tales.
1. ¿Qué es Kitty?
Kitty es un emulador de terminal acelerado mediante GPU con pestañas, paneles, temas, integración con la shell y herramientas auxiliares denominadas kittens. Funciona en Linux y macOS. En lugar de depender de varias ventanas del escritorio, puedo agrupar mis tareas en una sola instancia.
La organización tiene tres niveles:
┌──────────────── Ventana de Kitty ─────────────────────┐
│ [ Pestaña: Sistema ] [ Pestaña: Docker ] [ SSH ] │
├────────────────────────┬──────────────────────────────┤
│ Panel 1 │ Panel 2 │
│ $ htop │ $ docker compose ps │
│ │ │
└────────────────────────┴──────────────────────────────┘
La ventana del sistema es la que abre el escritorio; dentro hay pestañas y cada pestaña puede contener varios paneles, que Kitty también denomina windows.
2. Instalar Kitty
En Manjaro o Arch Linux:
sudo pacman -S kitty
En Debian y Ubuntu:
sudo apt update
sudo apt install kitty
En Fedora:
sudo dnf install kitty
Comprobamos la versión y lo iniciamos:
kitty --version
kitty
En un entorno como Hyprland se puede asociar el lanzamiento de Kitty a un atajo del compositor. Ese atajo se configura en Hyprland, no en kitty.conf.
3. Configuración: kitty.conf
El archivo principal suele estar en:
~/.config/kitty/kitty.conf
Lo preparamos conservando una copia si ya existe:
mkdir -p ~/.config/kitty
[ ! -f ~/.config/kitty/kitty.conf ] || \
cp ~/.config/kitty/kitty.conf ~/.config/kitty/kitty.conf.bak
touch ~/.config/kitty/kitty.conf
Podemos editarlo directamente o utilizar Ctrl+Shift+F2. Una configuración de partida sería:
# Fuentes (requiere tener instalada JetBrains Mono)
font_family JetBrains Mono
font_size 12.0
# Cursor e historial
cursor_shape block
cursor_blink_interval 0
scrollback_lines 10000
# Ventanas y bordes
window_padding_width 6
window_border_width 1pt
active_border_color #50fa7b
inactive_border_color #44475a
# Pestañas
tab_bar_edge bottom
tab_bar_style powerline
tab_bar_min_tabs 2
# Colores
foreground #f8f8f2
background #282a36
selection_background #44475a
# Comportamiento
enable_audio_bell no
mouse_hide_wait 3.0
shell .
shell_integration enabled
# Distribuciones disponibles: la primera es la inicial
enabled_layouts splits,tall,stack,grid,horizontal,vertical,fat
Guardo el archivo y pulso Ctrl+Shift+F5 para recargar los ajustes compatibles con recarga dinámica. Algunos cambios pueden requerir abrir una ventana nueva.
Para inspeccionar errores:
kitty --debug-config
Fuentes y colores
El tamaño de la fuente se puede modificar sin editar el archivo: Ctrl+Shift++ para aumentar, Ctrl+Shift+- para reducir y Ctrl+Shift+Backspace para restaurarlo. Dependiendo del teclado, aumentar puede utilizar la tecla =.
Kitty incluye selectores interactivos:
kitten choose-fonts
kitten themes
El primero facilita elegir una fuente instalada; el segundo permite previsualizar y aplicar esquemas de colores.
4. Pestañas y paneles
Las pestañas separan trabajos: por ejemplo, Sistema, Docker, Redes y Desarrollo. Los paneles muestran varias sesiones a la vez dentro de una pestaña.
| Atajo predeterminado | Acción |
|---|---|
Ctrl+Shift+T |
Nueva pestaña |
Ctrl+Shift+Q |
Cerrar pestaña |
Ctrl+Shift+→ |
Pestaña siguiente |
Ctrl+Shift+← |
Pestaña anterior |
Ctrl+Shift+. |
Mover pestaña a la derecha |
Ctrl+Shift+, |
Mover pestaña a la izquierda |
Ctrl+Shift+Alt+T |
Cambiar el nombre de la pestaña |
Ctrl+Shift+Enter |
Abrir panel nuevo |
Ctrl+Shift+W |
Cerrar panel actual |
Ctrl+Shift+] |
Panel siguiente |
Ctrl+Shift+[ |
Panel anterior |
Ctrl+Shift+1 a Ctrl+Shift+0 |
Ir directamente a uno de los diez primeros paneles |
Ctrl+Shift+R |
Iniciar redimensionado del panel |
Ctrl+Shift+F7 |
Elegir visualmente un panel |
Ctrl+Shift+F8 |
Intercambiar paneles visualmente |
Los paneles son terminales independientes. Lo que ejecuto en uno no se ejecuta automáticamente en el otro.
5. Layouts: cómo se distribuyen los paneles
Un layout es la regla que utiliza Kitty para organizar los paneles de una pestaña. El atajo predeterminado Ctrl+Shift+L recorre las distribuciones habilitadas en enabled_layouts.
Los siguientes diagramas son esquemas orientativos, no capturas exactas. Representan tres o cuatro paneles para mostrar la diferencia entre distribuciones.
Splits: divisiones libres
┌──────────────────┬────────────────────────┐
│ │ Panel 2 │
│ Panel 1 ├───────────┬────────────┤
│ │ Panel 3 │ Panel 4 │
└──────────────────┴───────────┴────────────┘
Es el que más me gusta para troubleshooting: puedo colocar una consola grande con SSH y dejar los logs y las comprobaciones a su lado.
Tall: panel principal lateral
┌───────────────────┬───────────────────────┐
│ │ Panel 2 │
│ Panel 1 ├───────────────────────┤
│ principal │ Panel 3 │
│ ├───────────────────────┤
│ │ Panel 4 │
└───────────────────┴───────────────────────┘
Fat: panel principal superior
┌───────────────────────────────────────────┐
│ Panel 1 │
│ principal │
├──────────────┬─────────────┬──────────────┤
│ Panel 2 │ Panel 3 │ Panel 4 │
└──────────────┴─────────────┴──────────────┘
Grid: cuadrícula
┌────────────────────┬──────────────────────┐
│ Panel 1 │ Panel 2 │
├────────────────────┼──────────────────────┤
│ Panel 3 │ Panel 4 │
└────────────────────┴──────────────────────┘
Stack: un panel visible cada vez
┌───────────────────────────────────────────┐
│ │
│ PANEL ACTIVO │
│ │
└───────────────────────────────────────────┘
Otros paneles existentes: 2 · 3 · 4
Los demás paneles siguen abiertos; cambiamos cuál se muestra.
Horizontal: paneles lado a lado
┌──────────────┬──────────────┬─────────────┐
│ │ │ │
│ Panel 1 │ Panel 2 │ Panel 3 │
│ │ │ │
└──────────────┴──────────────┴─────────────┘
Vertical: paneles apilados
┌───────────────────────────────────────────┐
│ Panel 1 │
├───────────────────────────────────────────┤
│ Panel 2 │
├───────────────────────────────────────────┤
│ Panel 3 │
└───────────────────────────────────────────┘
Dividir en una dirección concreta
En el layout splits puedo indicar directamente la orientación. Añado estos atajos personalizados a kitty.conf:
# Paneles lado a lado
map ctrl+alt+v launch --location=vsplit --cwd=current
# Paneles uno encima de otro
map ctrl+alt+b launch --location=hsplit --cwd=current
He reservado Ctrl+Alt+B para el segundo atajo porque más adelante utilizaré Ctrl+Alt+H para moverme hacia la izquierda. De este modo no hay conflictos.
--cwd=current solicita abrir el nuevo panel en el directorio de trabajo del panel activo, cuando Kitty puede detectarlo.
6. Navegar y redimensionar paneles al estilo Vim
Si utilizamos Vim o Neovim, podemos aprovechar el movimiento con H, J, K y L. Estos atajos no son predeterminados; hay que añadirlos:
map ctrl+alt+h neighboring_window left
map ctrl+alt+j neighboring_window down
map ctrl+alt+k neighboring_window up
map ctrl+alt+l neighboring_window right
Ahora Ctrl+Alt+H lleva al panel de la izquierda, J al inferior, K al superior y L al derecho. Resulta especialmente cómodo con splits.
7. Historial y salida de comandos
En administración de sistemas es habitual ejecutar comandos que devuelven cientos de líneas. Kitty permite recorrer ese historial y, con la integración de la shell, distinguir dónde empieza y termina cada comando.
| Atajo predeterminado | Acción |
|---|---|
Ctrl+Shift+↑ |
Subir una línea |
Ctrl+Shift+↓ |
Bajar una línea |
Ctrl+Shift+PageUp |
Subir una página |
Ctrl+Shift+PageDown |
Bajar una página |
Ctrl+Shift+Home |
Ir al inicio del historial |
Ctrl+Shift+End |
Ir al final del historial |
Ctrl+Shift+H |
Abrir el historial en el paginador |
Ctrl+Shift+G |
Abrir la salida del último comando |
Ctrl+Shift+Z |
Ir al prompt anterior |
Ctrl+Shift+X |
Ir al prompt siguiente |
Por ejemplo, tras ejecutar:
docker compose logs --tail=300 flask
Puedo utilizar Ctrl+Shift+G para consultar la salida del último comando en un paginador, si la integración con la shell está funcionando. Si quiero buscar texto en el historial, abro el paginador con Ctrl+Shift+H y utilizo sus herramientas de búsqueda (por ejemplo / en less).
Integración con Bash y Zsh
shell_integration enabled
Kitty soporta integración con shells habituales, incluidas Bash, Zsh y Fish. No sustituye a Oh My Zsh: ambos pueden coexistir.
Para comprobar la shell configurada y el proceso en ejecución:
echo "$SHELL"
ps -p $$ -o comm=
8. Copiar, pegar y seleccionar información
| Atajo predeterminado | Acción |
|---|---|
Ctrl+Shift+C |
Copiar la selección |
Ctrl+Shift+V |
Pegar desde el portapapeles |
Ctrl+Shift+S |
Pegar la selección primaria en Linux |
Ctrl+Shift+E |
Seleccionar y abrir una URL visible |
Ctrl+Shift+P, luego F |
Elegir una ruta visible e insertarla |
Ctrl+Shift+P, luego L |
Elegir una línea e insertarla |
Ctrl+Shift+P, luego H |
Elegir un hash visible e insertarlo |
Ctrl+Shift+U |
Selector Unicode |
Las combinaciones con coma son secuencias, no teclas que se pulsen a la vez. Por ejemplo, primero Ctrl+Shift+P y después F.
Para copiar texto desde un comando también existe el kitten clipboard:
echo 'Prueba desde Kitty' | kitten clipboard
kitten clipboard --get-clipboard
La lectura del portapapeles puede requerir autorización según la configuración de seguridad.
9. Kittens: herramientas extra
Los kittens son programas que amplían las posibilidades de Kitty. Estos son los que más sentido tienen en mi trabajo.
Visualizar imágenes con icat
kitten icat captura.png
kitten icat topologia.jpg
Muy útil para revisar capturas, imágenes de un laboratorio o recursos gráficos sin abandonar la terminal. Funciona donde esté disponible el protocolo gráfico de Kitty.
Comparar archivos con diff
kitten diff nginx.conf.bak nginx.conf
kitten diff configuracion_v1/ configuracion_v2/
Lo utilizo para revisar qué ha cambiado entre configuraciones sin modificar los originales.
Cambiar tema y fuente
kitten themes
kitten choose-fonts
Seleccionar caracteres especiales
kitten unicode_input
SSH con integración de Kitty
kitten ssh usuario@servidor
Además de abrir una conexión SSH, este kitten puede preparar determinadas funciones de integración en el host remoto. Si una máquina muestra errores con TERM=xterm-kitty, conviene revisar su configuración terminfo o probar este método, en lugar de modificar TERM permanentemente sin diagnosticar la causa.
10. Guardar sesiones de trabajo
Una sesión de Kitty define qué pestañas abrir, los layouts y los programas iniciales. Para mi trabajo resulta útil tener un espacio con sistema local, monitorización y Docker.
Creamos el directorio y el archivo:
mkdir -p ~/.config/kitty/sessions
nano ~/.config/kitty/sessions/sysadmin.kitty
Contenido:
# Entorno de trabajo de sysadmin
new_tab Sistema
layout splits
launch
launch --location=vsplit
new_tab Monitorizacion
layout tall
launch htop
new_tab Docker
layout splits
launch docker stats
new_tab Consola
launch
focus_tab 0
Ejecutamos:
kitty --session ~/.config/kitty/sessions/sysadmin.kitty
Hay que tener instalados htop y Docker para ese ejemplo. docker stats permanece actualizando información; un comando corto como docker ps terminaría inmediatamente, por lo que no es ideal como único proceso de un panel que queremos mantener abierto.
Si queremos abrir una pestaña ya situada en un proyecto, podemos definir un directorio de trabajo en la sesión:
new_tab Ansible
cd /home/usuario/proyectos/ansible-lab
launch
Sustituiremos la ruta por la del equipo donde se ejecute.
11. Control remoto: automatizar pestañas y paneles
Kitty incluye una interfaz de control remoto. Para probarla sin cambiar la configuración habitual, inicio una nueva instancia de pruebas:
kitty -o allow_remote_control=yes
Dentro de esa instancia:
# Mostrar pestañas y paneles (JSON)
kitten @ ls
# Crear panel
kitten @ launch
# Crear pestaña
kitten @ launch --type=tab
# Asignar título a la pestaña actual
kitten @ set-tab-title 'Administración'
No conviene habilitar el control remoto de manera indiscriminada, ya que permite actuar sobre sesiones y ejecutar procesos. Si vamos a utilizarlo habitualmente, debemos revisar las opciones de autorización y restringir su alcance.
12. Transparencia y terminal de acceso rápido
Si el compositor gráfico lo permite, podemos ajustar la transparencia:
background_opacity 0.92
dynamic_background_opacity yes
El valor 1.0 representa opacidad completa. En Hyprland o KDE Plasma el resultado también depende de las reglas del compositor.
En versiones compatibles de Kitty podemos lanzar una terminal de acceso rápido mediante:
kitten quick-access-terminal
Para abrirla con una tecla global, esa combinación debe configurarse en el compositor o escritorio, no solo en kitty.conf. La compatibilidad depende de la versión de Kitty y del entorno gráfico.
13. Ejemplo de uso: diagnóstico con Docker y SSH
Pongamos un caso habitual: estoy revisando un servicio Flask que se ejecuta en Docker en un servidor remoto.
Abro una pestaña Servidor con dos paneles. En el primero me conecto al host:
ssh usuario@servidor
Dentro de la conexión consulto los contenedores:
docker ps
En el segundo panel abro otra conexión SSH al mismo host y sigo los registros:
ssh usuario@servidor
# Una vez dentro del servidor:
docker compose logs -f --tail=100 flask
Dejo una pestaña adicional para el entorno local, desde donde puedo hacer comprobaciones HTTP:
curl -I https://ejemplo.com
La distribución puede ser así:
┌──────── Pestaña: Servidor ────────────────────────────┐
│ │
│ SSH 1: estado SSH 2: seguimiento │
│ ┌───────────────────────┬──────────────────────────┐ │
│ │ $ docker ps │ $ docker compose logs -f │ │
│ │ │ │ │
│ └───────────────────────┴──────────────────────────┘ │
├───────────────────────────────────────────────────────┤
│ Pestaña adicional: Local → curl, Git, Ansible │
└───────────────────────────────────────────────────────┘
No hace falta que todo pase por una única sesión SSH. Esta organización me permite aislar las tareas y revisar resultados sin perder de vista los registros.
14. Chuleta completa de atajos
Esta es mi referencia rápida. Todas las combinaciones de este apartado son las predeterminadas de Kitty para Linux, salvo que el escritorio, la versión o nuestra configuración las modifiquen.
Pestañas, ventanas y paneles
| Atajo | Función |
|---|---|
Ctrl+Shift+N |
Nueva ventana del sistema |
Ctrl+Shift+Enter |
Nuevo panel |
Ctrl+Shift+W |
Cerrar panel |
Ctrl+Shift+T |
Nueva pestaña |
Ctrl+Shift+Q |
Cerrar pestaña |
Ctrl+Shift+→ / Ctrl+Tab |
Pestaña siguiente |
Ctrl+Shift+← / Ctrl+Shift+Tab |
Pestaña anterior |
Ctrl+Shift+. |
Mover pestaña hacia delante |
Ctrl+Shift+, |
Mover pestaña hacia atrás |
Ctrl+Shift+Alt+T |
Renombrar pestaña |
Ctrl+Shift+] |
Panel siguiente |
Ctrl+Shift+[ |
Panel anterior |
Ctrl+Shift+1 ... Ctrl+Shift+0 |
Ir al panel 1 ... 10 |
Ctrl+Shift+R |
Redimensionar panel |
Ctrl+Shift+F7 |
Seleccionar panel |
Ctrl+Shift+F8 |
Intercambiar paneles |
Ctrl+Shift+L |
Cambiar layout |
Historial y prompts
| Atajo | Función |
|---|---|
Ctrl+Shift+↑ / ↓ |
Desplazar una línea |
Ctrl+Shift+PageUp / PageDown |
Desplazar una página |
Ctrl+Shift+Home / End |
Inicio / final del historial |
Ctrl+Shift+H |
Abrir historial en paginador |
Ctrl+Shift+G |
Consultar salida del último comando |
Ctrl+Shift+Z / X |
Prompt anterior / siguiente |
Edición, selección y apariencia
| Atajo | Función |
|---|---|
Ctrl+Shift+C |
Copiar |
Ctrl+Shift+V |
Pegar |
Ctrl+Shift+S |
Pegar selección primaria |
Ctrl+Shift+E |
Abrir URL visible mediante hints |
Ctrl+Shift+P, luego F |
Insertar ruta visible |
Ctrl+Shift+P, luego L |
Insertar línea visible |
Ctrl+Shift+P, luego H |
Insertar hash visible |
Ctrl+Shift+U |
Selector Unicode |
Ctrl+Shift++ |
Aumentar fuente |
Ctrl+Shift+- |
Reducir fuente |
Ctrl+Shift+Backspace |
Restaurar fuente |
Ayuda y configuración
| Atajo | Función |
|---|---|
Ctrl+Shift+F1 |
Documentación |
Ctrl+Shift+F2 |
Editar configuración |
Ctrl+Shift+F3 |
Paleta de comandos |
Ctrl+Shift+F5 |
Recargar configuración |
Ctrl+Shift+F6 |
Depurar configuración |
Ctrl+Shift+F10 |
Maximizar |
Ctrl+Shift+F11 |
Pantalla completa |
Ctrl+Shift+Esc |
Shell interactiva de Kitty |
Atajos personalizados de este tutorial
| Atajo | Acción | Configuración |
|---|---|---|
Ctrl+Alt+V |
Split lado a lado | map ctrl+alt+v launch --location=vsplit --cwd=current |
Ctrl+Alt+B |
Split uno encima de otro | map ctrl+alt+b launch --location=hsplit --cwd=current |
Ctrl+Alt+H |
Ir a la izquierda | map ctrl+alt+h neighboring_window left |
Ctrl+Alt+J |
Ir abajo | map ctrl+alt+j neighboring_window down |
Ctrl+Alt+K |
Ir arriba | map ctrl+alt+k neighboring_window up |
Ctrl+Alt+L |
Ir a la derecha | map ctrl+alt+l neighboring_window right |
15. Chuleta de comandos
| Comando | ¿Para qué sirve? |
|---|---|
kitty --version |
Ver versión |
kitty --debug-config |
Diagnosticar configuración |
kitten themes |
Cambiar tema |
kitten choose-fonts |
Elegir fuentes |
kitten icat imagen.png |
Mostrar una imagen |
kitten diff a.conf b.conf |
Comparar dos archivos |
kitten ssh usuario@host |
SSH con integración de Kitty |
kitten clipboard |
Copiar entrada estándar al portapapeles |
kitten clipboard --get-clipboard |
Leer portapapeles |
kitten unicode_input |
Selector Unicode |
kitten quick-access-terminal |
Terminal rápida, si es compatible |
kitty --session sesion.kitty |
Iniciar sesión predefinida |
kitten @ ls |
Listar paneles mediante control remoto |
kitten @ launch |
Nuevo panel por control remoto |
kitten @ launch --type=tab |
Nueva pestaña por control remoto |
16. Problemas habituales
| Síntoma | Qué revisar |
|---|---|
| No se aplican los cambios | Ctrl+Shift+F5, kitty --debug-config o abrir otra ventana |
| Una tecla no funciona | Configuración de Kitty y atajos globales de KDE/Hyprland |
| Una fuente no aparece | Instalación y nombre exacto de la fuente |
| Una división queda en otra posición | Layout activo, especialmente splits |
| El historial no reconoce comandos | shell_integration y shell utilizada |
SSH muestra unknown terminal type |
Definición terminfo en el host remoto o kitten ssh |
| No aparece la transparencia | Compositor y ajustes background_opacity |
kitten @ da error |
Autorización del control remoto |
17. ¿Kitty sustituye a tmux?
Para trabajar localmente con pestañas y paneles, muchas veces Kitty es suficiente. Pero Kitty por sí solo no mantiene una sesión interactiva viva en un servidor después de desconectarnos por SSH. Si necesito dejar procesos interactivos ejecutándose y volver a ellos desde otra conexión, utilizo tmux en el host remoto. De hecho, Kitty y tmux pueden utilizarse juntos.
Mi criterio es sencillo: Kitty organiza mi terminal local; tmux conserva sesiones remotas cuando necesito esa persistencia.
18. Referencias
- Guía completa de Kitty Terminal — Chaska, Edison Achalma — guía que inspiró parte de este artículo.
- Documentación oficial de Kitty.
- Configuración y atajos predeterminados.
- Layouts de Kitty.
- Sesiones de Kitty.