Capitulo 6: Shell Integration
Capitulo 6: Shell Integration
La shell integration es una de las funcionalidades mas potentes de Ghostty. Permite que la terminal entienda la estructura de tu shell: donde esta el prompt, que comandos se ejecutan y cual es el directorio actual.
Anterior: Temas y apariencia | Siguiente: Tips avanzados
Como funciona
Ghostty inyecta automaticamente scripts de integracion cuando detecta un shell compatible. Estos scripts usan secuencias de escape OSC para comunicar informacion del shell a la terminal.
Shells soportados
- Bash (version 4+, no el
/bin/bashde macOS) - Zsh
- Fish
- Elvish
Deteccion automatica
Por defecto, Ghostty detecta tu shell y carga la integracion:
shell-integration = detect
Valores posibles:
| Valor | Comportamiento |
|---|---|
detect | Detecta automaticamente el shell |
bash | Fuerza integracion con bash |
zsh | Fuerza integracion con zsh |
fish | Fuerza integracion con fish |
none | Desactiva la integracion |
Verificar que funciona
En los logs de Ghostty, busca el mensaje:
shell integration automatically injected shell=zsh
Configuracion manual
La integracion automatica solo funciona para el shell inicial. Si cambias de shell dentro de Ghostty, necesitas configuracion manual.
Bash
Agrega al inicio de ~/.bashrc:
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
Nota importante: El /bin/bash incluido en macOS (version 3.2) no soporta la integracion automatica. Instala una version moderna con Homebrew:
brew install bash
Zsh
Agrega al inicio de ~/.zshrc:
if [[ -n "${GHOSTTY_RESOURCES_DIR}" ]]; then
source "${GHOSTTY_RESOURCES_DIR}/shell-integration/zsh/ghostty-integration"
fi
Fish
Agrega a ~/.config/fish/config.fish:
if set -q GHOSTTY_RESOURCES_DIR
source "$GHOSTTY_RESOURCES_DIR/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish"
end
Funcionalidades de la shell integration
Jump-to-prompt
Permite saltar entre prompts en el historial de la terminal. Solo funciona con la shell integration activa.
Atajos por defecto:
# macOS
Cmd + Up # Prompt anterior
Cmd + Down # Prompt siguiente
Configuracion personalizada:
keybind = ctrl+shift+up=jump_to_prompt:-1
keybind = ctrl+shift+down=jump_to_prompt:1
El valor negativo salta hacia arriba (prompts anteriores) y el positivo hacia abajo.
Directorio de trabajo
La shell integration reporta el directorio actual a Ghostty. Esto permite:
- Nuevos splits/tabs heredan el directorio del terminal enfocado
- Titulo de la ventana muestra el directorio actual
Cursor dinamico
El cursor cambia de forma segun el contexto:
- En el prompt: Cursor tipo
barpara indicar modo edicion - Durante ejecucion: Cursor tipo
block
Esta funcionalidad se controla con:
shell-integration-features = cursor
Confirmacion inteligente al cerrar
Si el cursor esta en el prompt (sin proceso ejecutandose), Ghostty cierra el split sin pedir confirmacion. Si hay un proceso activo, muestra un dialogo de confirmacion.
Seleccion de salida de comandos
Con Ctrl+Click (o Cmd+Click en macOS) sobre un comando, puedes seleccionar toda su salida.
Click para mover cursor
Con Alt+Click (u Option+Click en macOS) en el prompt, el cursor se mueve a esa posicion. Util para editar comandos largos.
Features configurables
La opcion shell-integration-features permite activar o desactivar funcionalidades individuales:
shell-integration-features = cursor,sudo,title
Opciones disponibles
| Feature | Descripcion |
|---|---|
cursor | Cursor dinamico segun contexto |
sudo | Wrapper de sudo para preservar TERMINFO |
title | Actualiza el titulo de la ventana |
ssh-env | Preserva variables de entorno en SSH |
ssh-terminfo | Instala terminfo en servidores SSH |
Desactivar una feature especifica
Usa el prefijo no-:
shell-integration-features = cursor,no-sudo,title
Sudo wrapping
Cuando ejecutas sudo, el wrapper de Ghostty preserva la variable TERMINFO para que las secuencias de escape funcionen correctamente dentro de sesiones sudo.
# Sin wrapper: puede haber problemas de renderizado
sudo htop
# Con wrapper de Ghostty: funciona correctamente
# (automatico si shell-integration-features incluye sudo)
El wrapper detecta cuando usas sudoedit o sudo -e y omite la preservacion de TERMINFO en esos casos.
SSH integration
Ghostty puede configurar automaticamente las sesiones SSH para una mejor experiencia:
ssh-env
Preserva variables de entorno relevantes durante conexiones SSH:
shell-integration-features = ssh-env
ssh-terminfo
Instala automaticamente el terminfo de Ghostty en servidores remotos para una correcta renderizacion:
shell-integration-features = ssh-terminfo
Esto evita el comun problema de unknown terminal type al conectarse por SSH a servidores que no conocen Ghostty.
Solucion de problemas
La integracion no se activa
- Verifica que
shell-integrationno este ennone - Revisa los logs de Ghostty para mensajes de error
- Si usas un framework como oh-my-zsh o Starship, asegura que la integracion se cargue antes
Conflicto con Starship/oh-my-zsh
Algunos frameworks de shell pueden interferir con la integracion. Si tienes problemas:
# Carga la integracion de Ghostty primero en .zshrc
if [[ -n "${GHOSTTY_RESOURCES_DIR}" ]]; then
source "${GHOSTTY_RESOURCES_DIR}/shell-integration/zsh/ghostty-integration"
fi
# Luego carga oh-my-zsh u otros frameworks
source $ZSH/oh-my-zsh.sh
Bash de macOS
El bash de fabrica de macOS (3.2) no soporta la integracion. Solucion:
brew install bash
# Agregar /opt/homebrew/bin/bash a /etc/shells
# Cambiar shell por defecto
chsh -s /opt/homebrew/bin/bash
Anterior: Temas y apariencia | Siguiente: Tips avanzados