¿Qué es Kitty?
Kitty es un emulador de terminal moderno, rápido y rico en características, diseñado desde cero para aprovechar las GPUs modernas. Creado por Kovid Goyal, es conocido por:
Características Principales:
- Renderizado GPU acelerado: Extremadamente rápido
- Soporte Unicode completo: Incluyendo emojis y ligaduras
- True color: 24-bit RGB
- Ligaduras de fuentes: Soporte nativo
- Imágenes en terminal: Protocolo propio de alta calidad
- Multiplexación: Tabs y splits nativos
- Extensible: Sistema de kittens (plugins)
- Control remoto: API completa
- Configuración simple: Archivo único y legible
Por Qué Usar Kitty
Ventajas sobre otros terminales:
| Característica | Kitty | Alacritty | iTerm2 | GNOME Terminal |
|---|---|---|---|---|
| Renderizado por GPU | Sí | Sí | Sí | No |
| Pestañas nativas | Sí | No | Sí | Sí |
| División de paneles | Sí | No | Sí | No |
| Soporte para imágenes | Sí | No | Sí | No |
| Ligaduras (ligatures) | Sí | Sí | Sí | Sí |
| Sistema de extensiones | Sí (kittens) | No | Sí | No |
| Control remoto (SSH) | Sí | No | Sí | No |
| Multiplataforma | Sí (Linux/macOS/Windows) | Sí (Linux/macOS/Windows) | No (solo macOS) | No (solo Linux) |
Instalación
Requisitos del Sistema
Mínimos:
- OpenGL 3.3+
- Linux, macOS, o Windows (WSL)
- Python 3.6+
Recomendados:
- GPU moderna con drivers actualizados
- Monitor de alta resolución (4K/Retina)
- Fuente con ligaduras (FiraCode, JetBrains Mono)
Linux
Ubuntu/Debian:
Arch Linux:
Fedora:
Desde binario oficial (recomendado):
macOS
Homebrew:
Desde DMG:
Descargar desde: https://github.com/kovidgoyal/kitty/releases
Windows (WSL)
Verificar Instalación
Instalación de Dependencias Opcionales
Filosofía y Diseño
Principios de Diseño
- Velocidad: GPU rendering para máximo rendimiento
- Simplicidad: Configuración en un solo archivo
- Extensibilidad: Kittens para añadir funcionalidad
- Estándares: Soporte completo de especificaciones modernas
- Teclado primero: Control total desde teclado
Arquitectura
Componentes principales:
- Core (C): Renderizado GPU, performance crítico
- UI (Python): Interfaz, configuración, extensibilidad
- Kittens (Python/Go): Programas auxiliares
Stack tecnológico:
- OpenGL para renderizado
- HarfBuzz para text shaping
- FontConfig para gestión de fuentes
- libunistring para Unicode
Conceptos Básicos
Jerarquía: OS Windows > Tabs > Windows
┌─────────────────────────────────────┐
│ OS Window (ventana del sistema) │
│ ┌───────────────────────────────┐ │
│ │ Tab 1 Tab 2 Tab 3 │ │
│ ├───────────────────────────────┤ │
│ │ ┌──────────┬──────────┐ │ │
│ │ │ Window 1 │ Window 2 │ │ │
│ │ │ │ │ │ │
│ │ └──────────┴──────────┘ │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
OS Window: Ventana del sistema operativo Tab: Pestaña dentro de un OS Window Window: Panel dentro de un Tab (como splits en tmux)
Primer Uso
Al abrir Kitty por primera vez:
Configuración (kitty.conf)
Ubicación del Archivo
Linux/macOS: ~/.config/kitty/kitty.conf
Windows: %LOCALAPPDATA%\kitty\kitty.conf
Generar Configuración Por Defecto
Estructura de Configuración
Secciones principales:
- Fuentes
- Cursor
- Scrollback
- Mouse
- Terminal bell
- Window layout
- Tab bar
- Color scheme
- Advanced
- OS tweaks
- Keyboard shortcuts
Configuración Básica Recomendada
# ==========================================
# CONFIGURACIÓN BÁSICA DE KITTY
# ==========================================
# Fuentes
font_family JetBrains Mono
bold_font auto
italic_font auto
bold_italic_font auto
font_size 12.0
# Cursor
cursor_shape block
cursor_blink_interval 0
cursor_stop_blinking_after 15.0
# Scrollback
scrollback_lines 10000
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
# Mouse
mouse_hide_wait 3.0
url_color #0087bd
url_style curly
open_url_with default
detect_urls yes
copy_on_select no
# Ventanas
remember_window_size yes
initial_window_width 640
initial_window_height 400
window_border_width 0.5pt
window_margin_width 0
window_padding_width 0
active_border_color #00ff00
inactive_border_color #cccccc
# Pestañas
tab_bar_edge bottom
tab_bar_style fade
tab_bar_min_tabs 2
tab_title_template "{index}: {title}"
# Colores (Dracula theme)
foreground #f8f8f2
background #282a36
selection_foreground #ffffff
selection_background #44475a
# Negro
color0 #21222c
color8 #6272a4
# Rojo
color1 #ff5555
color9 #ff6e6e
# Verde
color2 #50fa7b
color10 #69ff94
# Amarillo
color3 #f1fa8c
color11 #ffffa5
# Azul
color4 #bd93f9
color12 #d6acff
# Magenta
color5 #ff79c6
color13 #ff92df
# Cyan
color6 #8be9fd
color14 #a4ffff
# Blanco
color7 #f8f8f2
color15 #ffffff
# Rendimiento
repaint_delay 10
input_delay 3
sync_to_monitor yes
# Bell
enable_audio_bell no
visual_bell_duration 0.0
window_alert_on_bell yes
bell_on_tab "🔔 "
# Advanced
shell .
editor .
allow_remote_control yes
listen_on unix:/tmp/kitty
clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask
# OS Específico (macOS)
macos_titlebar_color system
macos_option_as_alt no
macos_hide_from_tasks no
macos_quit_when_last_window_closed no
# Layouts habilitados
enabled_layouts tall:bias=50;full_size=1,stack,fat:bias=50;full_size=1,grid,splits
# ==========================================
# MAPEOS DE TECLADO
# ==========================================
# Modificador principal
kitty_mod ctrl+shift
# Clipboard
map kitty_mod+c copy_to_clipboard
map kitty_mod+v paste_from_clipboard
map kitty_mod+s paste_from_selection
# Scrolling
map kitty_mod+up scroll_line_up
map kitty_mod+down scroll_line_down
map kitty_mod+page_up scroll_page_up
map kitty_mod+page_down scroll_page_down
map kitty_mod+home scroll_home
map kitty_mod+end scroll_end
map kitty_mod+h show_scrollback
map kitty_mod+g show_last_command_output
# Ventanas
map kitty_mod+enter new_window
map kitty_mod+n new_os_window
map kitty_mod+w close_window
map kitty_mod+] next_window
map kitty_mod+[ previous_window
map kitty_mod+f move_window_forward
map kitty_mod+b move_window_backward
map kitty_mod+` move_window_to_top
map kitty_mod+r start_resizing_window
map kitty_mod+1 first_window
map kitty_mod+2 second_window
map kitty_mod+3 third_window
map kitty_mod+4 fourth_window
map kitty_mod+5 fifth_window
# Tabs
map kitty_mod+t new_tab
map kitty_mod+q close_tab
map kitty_mod+right next_tab
map kitty_mod+left previous_tab
map kitty_mod+. move_tab_forward
map kitty_mod+, move_tab_backward
map kitty_mod+alt+t set_tab_title
# Layouts
map kitty_mod+l next_layout
# Fuentes
map kitty_mod+equal change_font_size all +2.0
map kitty_mod+minus change_font_size all -2.0
map kitty_mod+backspace change_font_size all 0
# Misc
map kitty_mod+f1 show_kitty_doc overview
map kitty_mod+f2 edit_config_file
map kitty_mod+f5 load_config_file
map kitty_mod+f6 debug_config
map kitty_mod+f11 toggle_fullscreen
map kitty_mod+f10 toggle_maximized
map kitty_mod+u kitten unicode_input
map kitty_mod+e open_url_with_hints
map kitty_mod+escape kitty_shell window
# Opacidad de fondo
map kitty_mod+a>m set_background_opacity +0.1
map kitty_mod+a>l set_background_opacity -0.1
map kitty_mod+a>1 set_background_opacity 1
map kitty_mod+a>d set_background_opacity default
# Reset terminal
map kitty_mod+delete clear_terminal reset activeConfiguración Avanzada
Fuentes con fallbacks:
Ligaduras:
Modificar fuentes:
Atajos de Teclado
Modificador Principal
Por defecto kitty_mod = Ctrl+Shift
En macOS algunos también usan Cmd (⌘)
Scrolling
| Atajo | Acción |
|---|---|
Ctrl+Shift+Up |
Scroll línea arriba |
Ctrl+Shift+Down |
Scroll línea abajo |
Ctrl+Shift+Page Up |
Scroll página arriba |
Ctrl+Shift+Page Down |
Scroll página abajo |
Ctrl+Shift+Home |
Ir al inicio |
Ctrl+Shift+End |
Ir al final |
Ctrl+Shift+Z |
Prompt anterior (shell integration) |
Ctrl+Shift+X |
Prompt siguiente (shell integration) |
Ctrl+Shift+H |
Ver scrollback en pager |
Ctrl+Shift+G |
Ver último comando (shell integration) |
Ctrl+Shift+/ |
Buscar en scrollback |
Tabs
| Atajo | Acción |
|---|---|
Ctrl+Shift+T |
Nueva tab |
Ctrl+Shift+Q |
Cerrar tab |
Ctrl+Shift+Right |
Tab siguiente |
Ctrl+Shift+Left |
Tab anterior |
Ctrl+Shift+. |
Mover tab adelante |
Ctrl+Shift+, |
Mover tab atrás |
Ctrl+Shift+Alt+T |
Renombrar tab |
Ctrl+Alt+1...9 |
Ir a tab N |
Windows (Ventanas dentro de Tabs)
| Atajo | Acción |
|---|---|
Ctrl+Shift+Enter |
Nueva window |
Ctrl+Shift+N |
Nueva OS window |
Ctrl+Shift+W |
Cerrar window |
Ctrl+Shift+] |
Window siguiente |
Ctrl+Shift+[ |
Window anterior |
Ctrl+Shift+F |
Mover window adelante |
Ctrl+Shift+B |
Mover window atrás |
Ctrl+Shift+`` `| Mover window al top | |Ctrl+Shift+R| Redimensionar window | |Ctrl+Shift+F7| Selección visual de window | |Ctrl+Shift+F8| Swap visual de window | |Ctrl+Shift+1…0` |
Ir a window N |
Layouts
| Atajo | Acción |
|---|---|
Ctrl+Shift+L |
Siguiente layout |
Clipboard
| Atajo | Acción |
|---|---|
Ctrl+Shift+C |
Copiar |
Ctrl+Shift+V |
Pegar |
Ctrl+Shift+S |
Pegar de selección |
Ctrl+Shift+O |
Pasar selección a programa |
Fuentes
| Atajo | Acción |
|---|---|
Ctrl+Shift+Equal |
Aumentar tamaño |
Ctrl+Shift+Minus |
Disminuir tamaño |
Ctrl+Shift+Backspace |
Reset tamaño |
Miscelánea
| Atajo | Acción |
|---|---|
Ctrl+Shift+F1 |
Mostrar ayuda |
Ctrl+Shift+F2 |
Editar config |
Ctrl+Shift+F5 |
Recargar config |
Ctrl+Shift+F6 |
Debug config |
Ctrl+Shift+F11 |
Toggle fullscreen |
Ctrl+Shift+F10 |
Toggle maximized |
Ctrl+Shift+U |
Input Unicode |
Ctrl+Shift+E |
Open URL hints |
Ctrl+Shift+Escape |
Kitty shell |
Ctrl+Shift+Delete |
Reset terminal |
Atajos en macOS
Reemplazan algunos con Cmd (⌘):
| Windows/Linux | macOS |
|---|---|
Ctrl+Shift+T |
Cmd+T |
Ctrl+Shift+W |
Cmd+W |
Ctrl+Shift+C |
Cmd+C |
Ctrl+Shift+V |
Cmd+V |
Ctrl+Shift+N |
Cmd+N |
Ctrl+Shift+F2 |
Cmd+, |
Ctrl+Shift+F11 |
Ctrl+Cmd+F |
Ventanas y Pestañas
Concepto de Multiplexación
Kitty tiene multiplexación nativa (sin necesidad de tmux):
Jerarquía:
OS Window (kitty instance)
└── Tab 1
├── Window 1
├── Window 2
└── Window 3
└── Tab 2
└── Window 1
Crear Ventanas y Tabs
Nueva window:
Nueva tab:
Nueva OS window:
Mover Windows y Tabs
Mover windows:
Mover tabs:
Detach (Separar)
Detach window:
Detach tab:
Títulos Personalizados
Layouts (Diseños)
Layouts Disponibles
Kitty tiene 7 layouts built-in:
- Stack: Una window a la vez (maximizada)
- Tall: Una o más windows full-height a la izquierda
- Fat: Una o más windows full-width arriba
- Grid: Grid balanceado
- Splits: Arreglo arbitrario (como tmux)
- Horizontal: Todas las windows lado a lado
- Vertical: Todas las windows una debajo de otra
Stack Layout
┌────────────────────────────┐
│ │
│ │
│ Window Actual │
│ (maximizada) │
│ │
│ │
└────────────────────────────┘
Configuración:
Tall Layout
┌──────────┬─────────────────┐
│ │ │
│ │ │
│ ├─────────────────┤
│ Full │ │
│ Height │ │
│ ├─────────────────┤
│ │ │
│ │ │
└──────────┴─────────────────┘
Configuración:
Acciones:
Fat Layout
┌────────────────────────────┐
│ │
│ Full Width │
│ │
├─────────┬─────────┬────────┤
│ │ │ │
│ │ │ │
└─────────┴─────────┴────────┘
Configuración:
Mismas acciones que Tall layout.
Grid Layout
┌────────┬────────┬────────┐
│ │ │ │
│ │ │ │
├────────┼────────┼────────┤
│ │ │ │
│ │ │ │
└────────┴────────┴────────┘
Configuración:
Splits Layout
El más flexible - como tmux/vim splits.
┌──────────┬─────────────────┐
│ │ │
│ │ │
│ ├────────┬────────┤
│ │ │ │
│ │ │ │
│ ├────────┴────────┤
│ │ │
│ │ │
└──────────┴─────────────────┘
Configuración:
Crear splits:
# Split horizontal
map f5 launch --location=hsplit
# Split vertical
map f6 launch --location=vsplit
# Split auto (horizontal si ancho, vertical si alto)
map f4 launch --location=split
# Rotar split (horizontal <-> vertical)
map f7 layout_action rotate
# Mover window
map shift+up move_window up
map shift+down move_window down
map shift+left move_window left
map shift+right move_window right
# Mover window al borde
map ctrl+shift+up layout_action move_to_screen_edge top
map ctrl+shift+down layout_action move_to_screen_edge bottom
map ctrl+shift+left layout_action move_to_screen_edge left
map ctrl+shift+right layout_action move_to_screen_edge right
# Bias del split
map ctrl+. layout_action bias 80Horizontal y Vertical Layouts
Horizontal (lado a lado):
┌────────┬────────┬────────┐
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
└────────┴────────┴────────┘
Vertical (uno debajo del otro):
┌────────────────────────────┐
│ │
├────────────────────────────┤
│ │
├────────────────────────────┤
│ │
└────────────────────────────┘
Configuración:
Cambiar Entre Layouts
Redimensionar Windows
Modo interactivo:
Atajos directos:
Fuentes
Configuración Básica
Fuentes Recomendadas
Con ligaduras:
- JetBrains Mono
- Fira Code
- Cascadia Code
- Victor Mono
- Iosevka
Mono clásicas:
- IBM Plex Mono
- Source Code Pro
- Ubuntu Mono
- Inconsolata
Fuentes con Powerline
Symbol Maps
Mapear rangos Unicode a fuentes específicas:
Ligaduras
Controlar por window:
Font Features
Modificar Fuentes
Kitten para Elegir Fuentes
Colores y Temas
Estructura de Colores
# Colores básicos
foreground #foreground_color
background #background_color
# Selección
selection_foreground #color
selection_background #color
# Cursor
cursor #color
cursor_text_color #color
# Tabla de colores (16 básicos)
# Negro
color0 #color
color8 #color
# Rojo
color1 #color
color9 #color
# Verde
color2 #color
color10 #color
# Amarillo
color3 #color
color11 #color
# Azul
color4 #color
color12 #color
# Magenta
color5 #color
color13 #color
# Cyan
color6 #color
color14 #color
# Blanco
color7 #color
color15 #color
# Colores extendidos (256 colores)
color16 #color
color17 #color
# ... hasta color255Temas Populares
Dracula:
foreground #f8f8f2
background #282a36
selection_foreground #ffffff
selection_background #44475a
color0 #21222c
color8 #6272a4
color1 #ff5555
color9 #ff6e6e
color2 #50fa7b
color10 #69ff94
color3 #f1fa8c
color11 #ffffa5
color4 #bd93f9
color12 #d6acff
color5 #ff79c6
color13 #ff92df
color6 #8be9fd
color14 #a4ffff
color7 #f8f8f2
color15 #ffffffNord:
Gruvbox Dark:
Kitten Themes
Opacidad y Blur
# Opacidad del background
background_opacity 0.9
# Background blur (macOS y KDE)
background_blur 20
# Dynamic opacity (permite cambiar con atajos)
dynamic_background_opacity yes
# Cambiar opacidad con atajos
map ctrl+shift+a>m set_background_opacity +0.1
map ctrl+shift+a>l set_background_opacity -0.1
map ctrl+shift+a>1 set_background_opacity 1
map ctrl+shift+a>d set_background_opacity defaultBackground Image
Dim Text
Cursor y Scrollback
Cursor
Forma:
Forma cuando no enfocado:
Grosor:
Blink:
Color:
Cursor Trail:
Scrollback
Líneas de historial:
Pager:
Scrollback Pager History:
Fill Window:
Scroll Multiplier:
Scrollbar
# Cuándo mostrar scrollbar
scrollbar scrolled
# Opciones: scrolled, hovered, scrolled-and-hovered, always, never
# Interactivo
scrollbar_interactive yes
# Jump on click
scrollbar_jump_on_click yes
# Ancho
scrollbar_width 0.5
scrollbar_hover_width 1
# Opacidad
scrollbar_handle_opacity 0.5
scrollbar_track_opacity 0
# Colores
scrollbar_handle_color foreground
scrollbar_track_color foregroundMouse
Comportamiento Básico
URLs
# Color y estilo de URLs
url_color #0087bd
url_style curly
# Opciones: none, straight, double, curly, dotted, dashed
# Programa para abrir URLs
open_url_with default
# Prefijos detectados
url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh
# Detectar URLs
detect_urls yes
# Mostrar target de hyperlinks
show_hyperlink_targets no
# Underline de hyperlinks
underline_hyperlinks hover
# Opciones: hover, always, neverSelección
# Copiar al seleccionar
copy_on_select no
# Opciones: no, clipboard, a1 (buffer personalizado)
# Limpiar selección al perder clipboard
clear_selection_on_clipboard_loss no
# Caracteres de palabra
select_by_word_characters @-./_~?&=%+#
# Intervalo de clicks
click_interval -1.0
# -1 = usar default del sistemaPointer Shape
Mouse Actions
Sintaxis:
Ejemplos:
# Click en URL
mouse_map left click ungrabbed mouse_handle_click selection link prompt
# Pegar con middle click
mouse_map middle release ungrabbed paste_from_selection
# Seleccionar con left press
mouse_map left press ungrabbed mouse_selection normal
# Selección rectangular con Ctrl+Alt
mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle
# Seleccionar palabra con double click
mouse_map left doublepress ungrabbed mouse_selection word
# Seleccionar línea con triple click
mouse_map left triplepress ungrabbed mouse_selection line
# Extender selección con right press
mouse_map right press ungrabbed mouse_selection extendClearar todos los mouse actions:
Kittens (Extensiones)
¿Qué son los Kittens?
Programas auxiliares que extienden funcionalidad de kitty.
Kittens Built-in
1. icat - Imágenes en Terminal
En kitty.conf:
2. diff - Diff con Imágenes
Configurar como git difftool:
3. unicode_input - Input Unicode
4. themes - Cambiar Temas
5. choose-fonts - Elegir Fuentes
6. hints - Selección Rápida
Configuración:
# Abrir URL
map ctrl+shift+e open_url_with_hints
# Insertar path
map ctrl+shift+p>f kitten hints --type path --program -
# Abrir path
map ctrl+shift+p>shift+f kitten hints --type path
# Insertar archivo (con chooser)
map ctrl+shift+p>c kitten choose-files
# Insertar directorio
map ctrl+shift+p>d kitten choose-files --mode=dir
# Insertar línea
map ctrl+shift+p>l kitten hints --type line --program -
# Insertar palabra
map ctrl+shift+p>w kitten hints --type word --program -
# Insertar hash
map ctrl+shift+p>h kitten hints --type hash --program -
# Abrir en editor
map ctrl+shift+p>n kitten hints --type linenum
# Abrir hyperlink
map ctrl+shift+p>y kitten hints --type hyperlink7. ssh - SSH Mejorado
Ventajas: - Shell integration automática - Re-uso de conexiones - Clonación de config local - Transferencia de terminfo
8. transfer - Transferencia de Archivos
9. clipboard - Clipboard en SSH
10. broadcast - Broadcast Input
11. notify - Notificaciones
12. panel - Panel Desktop
13. @ (Remote Control)
Crear Kittens Personalizados
Estructura básica:
#!/usr/bin/env python3
# mi_kitten.py
from kittens.tui.handler import Handler
from kitty.key_encoding import KeyEvent
class MyHandler(Handler):
def initialize(self):
self.print("¡Hola desde mi kitten!")
def on_key(self, key_event: KeyEvent):
if key_event.key == 'q':
self.quit_loop(0)
return True
def main(args):
handler = MyHandler()
handler.run()
if __name__ == '__main__':
import sys
main(sys.argv[1:])Usar:
Control Remoto
Habilitar Remote Control
Uso Básico
Comandos Principales
Información:
Crear/Cerrar:
Modificar:
Enviar Input:
Focus:
Matching
Usar --match para seleccionar windows/tabs:
Remote Control desde Mapeos
Remote Control via SSH
Con kitten ssh:
Sesiones
¿Qué son las Sesiones?
Archivos que definen:
- Layout de tabs y windows
- Directorio de trabajo
- Comandos a ejecutar
- Configuración específica
Crear Sesión
Archivo de sesión:
# mi_sesion.kitty
# Nueva ventana
new_window
cd ~/proyectos/app
launch vim
# Nueva ventana
new_window
cd ~/proyectos/app
launch
# Nueva tab
new_tab editor
cd ~/proyectos/app
layout tall
launch vim src/main.py
launch
# Nueva tab con split
new_tab servers
launch ssh server1
launch --location=hsplit ssh server2
Usar Sesión
Al iniciar kitty:
Desde configuración:
Desde atajo:
Comandos de Sesión
new_tab:
new_tab [nombre]
cd /directorio
layout tall
launch comando
new_window:
new_window
cd /directorio
launch comando
launch:
launch [--location=split] comando
cd:
cd /ruta/absoluta
cd ~/relativa
layout:
layout tall
layout stack
layout splits
focus:
focus
enabled_layouts:
enabled_layouts tall,stack,grid
Ejemplo Completo
# Sesión de desarrollo web
# ~/proyectos/web_dev.kitty
# Tab principal - Editor
new_tab Editor
cd ~/proyectos/webapp
layout tall:bias=70;full_size=1
launch nvim .
# Tab de servidores
new_tab Servers
cd ~/proyectos/webapp
layout splits
launch npm run dev
launch --location=hsplit npm run tailwind
# Tab de terminal
new_tab Terminal
cd ~/proyectos/webapp
launch
# Tab de git
new_tab Git
cd ~/proyectos/webapp
launch lazygit
# Focus en primera tab
focus_tab 1
Guardar Sesión Actual
Kitty no tiene comando built-in para guardar, pero puedes usar remote control:
Switching Sessions
Con goto_session:
Cerrar sesión:
Integración con Shell
Shell Integration
Kitty puede integrarse con bash, zsh y fish para:
- Saltar a prompts anteriores
- Ver output de comandos
- Tracking de directorios
- Indicadores visuales
Habilitar
Deshabilitar características específicas:
# Deshabilitar cursor shape en prompt
shell_integration no-cursor
# Deshabilitar título automático
shell_integration no-title
# Deshabilitar tracking de cwd
shell_integration no-cwd
# Deshabilitar prompt marks
shell_integration no-prompt-mark
# Deshabilitar completion
shell_integration no-complete
# Deshabilitar sudo
shell_integration no-sudoConfiguración Manual
Si la integración automática no funciona:
Bash (~/.bashrc):
Zsh (~/.zshrc):
Fish (~/.config/fish/config.fish):
Características con Shell Integration
Saltar a prompts:
Ver output de comandos:
Mouse:
- Click en prompt para mover cursor
- Right-click en comando para ver output
- Click en error para copiar
Indicadores visuales:
- Marca en prompt
- Color diferente para comandos exitosos/fallidos
Marcas (Marks)
¿Qué son las Marcas?
Sistema para resaltar texto basado en regex.
Tipos de Marcas
Hay 3 tipos (cada uno con color diferente):
- mark1 (light steel blue)
- mark2 (beige)
- mark3 (violet)
Configurar Colores
Crear Marcas
Con regex:
Desde línea de comando:
Usar Marcas
Toggle:
Saltar:
Eliminar:
Ejemplo Completo
# Marcar diferentes niveles de log
map ctrl+shift+1 create_marker iregex 1 "^.*ERROR.*$"
map ctrl+shift+2 create_marker iregex 2 "^.*WARNING.*$"
map ctrl+shift+3 create_marker iregex 3 "^.*INFO.*$"
# Navegar entre marcas
map ctrl+shift+n scroll_to_mark next
map ctrl+shift+p scroll_to_mark prev
# Toggle marcas
map ctrl+shift+m toggle_marker iregex 1 "^.*ERROR.*$"
# Limpiar todas las marcas
map ctrl+shift+c remove_markerCaracterísticas Avanzadas
Multiple Copy/Paste Buffers
Keyboard Modes
Modos de teclado para mapeos contextuales:
Per-Application Mappings
Environment Variables
Watchers
Scripts Python que reaccionan a eventos:
~/.config/kitty/watchers.py:
from kitty.boss import Boss
def on_focus_change(boss: Boss, window, data):
if data['focused']:
# Window ganó focus
pass
else:
# Window perdió focus
pass
def on_close(boss: Boss, window, data):
# Window está cerrándose
pass
def on_resize(boss: Boss, window, data):
# Window fue redimensionada
pass
def on_title_change(boss: Boss, window, data):
new_title = data['title']
# Hacer algo con nuevo título
passHabilitar:
Filtros de Notificación
Allow Cloning
Notificaciones de Comando
Optimización de Rendimiento
Repaint Delay
Input Delay
Sync to Monitor
Scrollback
Text Composition
OpenGL
Trucos y Tips
Cambiar Directorio del Shell al Salir
Bash/Zsh:
Previsualizar Imágenes
Integración con Neovim
SSH con Túneles
Diff de Directorios
Broadcast Input
Quick Terminal (Quake-style)
Configurar en i3/sway:
for_window [class="kitty-quake"] floating enable, move position center
bindsym $mod+grave exec ~/.local/bin/kitty-quake.sh
8. URLs Personalizadas
Layouts Personalizados
Crear ~/.config/kitty/layouts/my_layout.py:
Themevar para Colores Dinámicos
Solución de Problemas
Problemas Comunes
Ligaduras No Funcionan
Verificar:
Solución:
Colores Incorrectos
Verificar:
Solución:
Imágenes No se Muestran
Verificar:
Solución:
Performance Lento
Diagnóstico:
Solución:
Remote Control No Funciona
Verificar:
Solución:
Fuentes Borrosas
Solución:
Clipboard No Funciona
Verificar:
Solución:
Debugging
Modo verbose:
Ver logs:
Referencia Completa
Archivos de Configuración
~/.config/kitty/
├── kitty.conf # Configuración principal
├── current-theme.conf # Tema actual (generado)
├── diff.conf # Config para kitty diff
├── sessions/ # Archivos de sesión
│ ├── dev.kitty
│ └── personal.kitty
├── layouts/ # Layouts personalizados
│ └── my_layout.py
└── watchers.py # Watchers de eventos
Variables de Entorno
Códigos de Escape Útiles
API de Remote Control
Endpoints principales:
ls- Listar windows/tabslaunch- Crear window/tabclose-window- Cerrar windowclose-tab- Cerrar tabfocus-window- Enfocar windowfocus-tab- Enfocar tabget-colors- Obtener coloresset-colors- Cambiar coloresget-text- Obtener textosend-text- Enviar textoresize-window- Redimensionarset-window-title- Cambiar títulogoto-layout- Cambiar layout
Comparison Chart
| Característica | Kitty | Alacritty | iTerm2 | Wezterm |
|---|---|---|---|---|
| GPU Rendering | ✅ | ✅ | ✅ | ✅ |
| Tabs | ✅ | ❌ | ✅ | ✅ |
| Splits | ✅ | ❌ | ✅ | ✅ |
| Imágenes | ✅ | ❌ | ✅ | ✅ |
| Ligaduras | ✅ | ✅ | ✅ | ✅ |
| Remote Control | ✅ | ❌ | ✅ | ✅ |
| Extensiones | ✅ (kittens) | ❌ | ✅ | ✅ (lua) |
| Cross-platform | ✅ | ✅ | ❌ | ✅ |
| Config Language | conf | toml | GUI | lua |
| Shell Integration | ✅ | ❌ | ✅ | ✅ |
Conclusión
Roadmap de Aprendizaje
Semana 1 - Básicos:
- Instalar y configurar
- Aprender atajos principales
- Configurar fuentes y colores
Semana 2 - Intermedio:
- Dominar tabs y windows
- Experimentar con layouts
- Configurar shell integration
Mes 1 - Avanzado:
- Usar kittens
- Remote control básico
- Crear sesiones
Mes 2+ - Experto:
- Crear kittens propios
- Watchers
- Automatización completa
Recursos
Documentación Oficial:
- https://sw.kovidgoyal.net/kitty/
- https://sw.kovidgoyal.net/kitty/conf/
Comunidad:
- GitHub: https://github.com/kovidgoyal/kitty
- Discussions: https://github.com/kovidgoyal/kitty/discussions
- Reddit: r/KittyTerminal
Temas:
- https://github.com/dexpota/kitty-themes
- https://github.com/kdrag0n/base16-kitty
Configs de Ejemplo:
- https://github.com/search?q=kitty.conf
Tips Finales
- Empieza simple: No copies configs complejas al inicio
- Experimenta: Prueba diferentes layouts y kittens
- Lee la docs: La documentación de kitty es excelente
- Usa kitten themes: Para encontrar tu tema perfecto
- Aprovecha shell integration: Hace la diferencia
- Explora kittens: Son muy potentes
- Practica atajos: La eficiencia viene de no usar el mouse
- Contribuye: Reporta bugs, sugestiones, o crea kittens
Publicaciones Similares
Si te interesó este artículo, te recomendamos que explores otros blogs y recursos relacionados que pueden ampliar tus conocimientos. Aquí te dejo algunas sugerencias:
- Comandos De Informacion Windows
- Adb
- Limpieza Y Optimizacion De Pc
- Usando Apk En Windown 11
- Gestionar Versiones De Jdk En Kubuntu
- Instalar Tor Browser
- Crear Enlaces Duros O Hard Link En Linux
- Comandos Vim
- Guia De Git Y Github
- 00 Primeros Pasos En Linux
- 01 Introduccion Linux
- 02 Distribuciones Linux
- 03 Instalacion Linux
- 04 Administracion Particiones Volumenes
- Atajos De Teclado Y Comandos Para Usar Vim
- Instalando Specitify
- Gestiona Tus Dotfiles Con Gnu Stow
Esperamos que encuentres estas publicaciones igualmente interesantes y útiles. ¡Disfruta de la lectura!