Configurar Starship en Manjaro y Zsh#

Hace poco vengo cambiando múltiples herramientas en mi día a día, y en el manejo de la terminal Linux hay varios de esos cambios. Uno de esos es el shell prompt (que podría traducirse tal vez como “indicador de terminal”), y estoy usando starship. Sin embargo, hay detalles no documentados sobre como habilitarlo en Manjaro con zsh, que aquí les cuento.

Apariencia visual de mensajes del indicador starship en la terminal para git, python y batería baja.

Apariencia del indicador Starship en un directorio git con ambiente Python, y con indicación de batería baja.#

Para empezar, primero, un indicador de terminal es un programa que genera los textos asociados a cada ejecución de comandos en la terminal y lo que hay antes del cursor. Un buen indicador de terminal nos aporta información útil rápidamente del directorio en el cual nos ubicamos, de la ejecución de una línea de comandos o incluso la batería. Starship nos entrega esto, y hace parte del nuevo ecosistema de utilidades desarrolladas en rust.

Instalar Starship#

En Manjaro, disponemos de starship en el repositorio oficial, pero igual puedes instalar a partir de la rutina de instalación oficial que aplica a cualquier distribución Linux (útil si usas una distro como Ubuntu).

sudo pamac install starship --no-confirm
curl -sS https://starship.rs/install.sh | sh

Iniciar Starship#

Al usar zsh, la inicialización la podemos hacer añadiendo el init al archivo ~/.zshrc.

echo 'eval "$(starship init zsh)"' >> ~/.zshrc
source ~/.zshrc

El lenguaje de terminal por defecto es bash y si estás cómodo con este, la forma de inicializar es la siguiente.

echo 'eval "$(starship init bash)"' >> ~/.bashrc
source ~/.bashrc

Finalmente, estamos listos, o al menos, según el procedimiento oficial.

En Manjaro, zsh posee una configuración predeterminada para el indicador de terminal, en el archivo ~/.zshrc y en el archivo /usr/share/zsh/manjaro-zsh-prompt. Esta configuración es para habilitar powerline y powerlevel10k (p10k) y evita el uso de un prompt adicional.

Es necesario deshabilitar el uso de estos dos. Para ello, debemos pasar a falso el uso de powerline y comentar (o borrar) las líneas de la configuración del prompt.

# Use powerline
USE_POWERLINE="false"
# Has weird character width
# Example:
#    is not a diamond
HAS_WIDECHARS="false"
# Source manjaro-zsh-configuration
if [[ -e /usr/share/zsh/manjaro-zsh-config ]]; then
  source /usr/share/zsh/manjaro-zsh-config
fi
# Use manjaro zsh prompt
#if [[ -e /usr/share/zsh/manjaro-zsh-prompt ]]; then
#  source /usr/share/zsh/manjaro-zsh-prompt
#fi
eval "$(starship init zsh)"

Ahora, reconstruimos la configuración y tenemos starship en Manjaro con Zsh.

source ~/.zshrc

Archivo de configuración#

En general, la configuración por defecto es buena y no hay una necesidad de cambios fuertes. Sin embargo, el módulo de gcloud se muestra en general en la sesión lo cual no me es agradable y poco útil en mi caso. Por este motivo creo el archivo de configuración ~/.config/starship.toml y deshabilito el módulo.

cat << 'EOF' > ~/.config/starship.toml
[gcloud]
disabled = true
EOF

Puedes consultar otras opciones de configuración en Starship: Configuration.

Referencias#