Starship: Una shell para imaginar Linux en las estrellas

Hablamos de Starship, una prompt de consola minimalista, muy rápida y extremadamente personalizable para la mayoría de las terminales (shell), ya sea Bash, Zsh o Fish (Si no sabes que son aquí te explico). La consola Starship está diseñada para mostrar solo la información que necesitemos mientras trabajamos, manteniéndose elegante en todo momento.

Háblame un poco más sobre Starship

No es la primera vez que hablamos de herramientas que extienden la consola, recordar que hace un tiempo hablamos de Byobu.

Veamos que podemos encontrar trabajando con ella. Por ejemplo, el símbolo del sistema se vuelve rojo si el último comando devuelve un código distinto de cero o nos ofrece información del nombre del actual nombre del usuario, si no es el mismo que el usuario registrado. Además, añade curiosas imágenes mientras trabajamos.

Starship es software libre, ya que utiliza una licencia ISC, reconocida por la Free Software Foundation, para dudas podéis consultar esta nota.

Sí, es verdad que el título no tiene mucho que ver con el producto en sí, pero como soy un aficionado de la ciencia ficción, aprovecho la mínima oportunidad para ser galante de ello. 🙂

Requisitos previos

Para que funcione la herramienta debemos tener instalado el paquete llamado «Powerline«. Si no lo conoces te puede decir que Powerline es un complemento de línea de estado para vim, y proporciona líneas de estado y avisos para varias otras aplicaciones, incluidas zsh, bash, tmux, IPython, Awesome, i3 y Qtile.

En una entrada anterior os expliqué en que consistía Powerline y como instalarlo en GNU/Linux:

Powerline: Añade poder a la terminal

También necesitamos el paquete de fuentes llamado FiraCode, para ello debemos seguir estas instrucciones:

# Sistemas paquetería APT como Debian, Ubuntu o Linux Mint
sudo apt install fonts-firacode
# Instalación en Fedora
dnf copr enable evana/fira-code-fonts
dnf install fira-code-fonts

En otras distribuciones, como es el caso de Centos 7, podemos seguir las instrucciones ubicadas en el repositorio oficial del proyecto.

Instalación de Starship en GNU/Linux

Una vez nuestro equipo ya cumple con los requisitos previos, vamos a proceder con la instalación.

Podemos seguir diferentes caminos, por ejemplo utilizar la herramienta Brew, de la que hablamos hace un tiempo:

brew install starship

O bien utilizar Rust

Para ello previamente instalamos la herramienta:

sudo curl https://sh.rustup.rs -sSf | sh

E instalamos:

cargo install starship

Instalación en Arch

En sistemas Arch tenemos el paquete disponible en los repositorios de AUR

yay -S starship

Instalación en todas las distribuciones

Para otras distribuciones GNU/Linux, podemos seguir estas instrucciones:

wget https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-gnu.tar.gz
tar xvf starship-x86_64-unknown-linux-gnu.tar.gz
sudo mv starship /usr/local/bin/

Configurar Starship por primera vez

Para poder utilizar Starship debemos modificar las variables de entorno.

Si utilizamos Bash, modificaremos el fichero de configuración «./bashrc»

eval "$(starship init bash)"

Si utilizamos Fish:

# ~/.config/fish/config.fish
 
starship init fish | source

Y en el caso de Zsh:

# ~/.zshrc
 
eval "$(starship init zsh)"

Una vez hecho esto, en mi caso he utilizado la configuración para Zsh, – que desde que os hablé de ella en una entrada, es la que utilizo en mi portátil -, podermos adaptar su configuración a nuestras necesidades. Para ello debemos seguir la documentación oficial para la configuración.

En mi caso, sin modificar su configuración, el resultado es el siguiente:

Vista de Starship junto a Zsh recién instalado.

Crear configuración

Consultado la documentación indicada antes, sabemos que el fichero de configuración a crear debemos estar hubicado en la home del usuario, dentro de la carpeta oculta «.config». Creamos el fichero de la siguiente manera:

touch ~/.config/starship.toml

Por ejemplo podemos impedir que se cree una nueva línea al comienzo del «prompt» o bien reemplazar el símbolo «❯» por «➜». Como se ve en el ejemplo:

add_newline = false
[character]      
symbol = "➜"

Además podemos añadir que nos muestre nuestro nombre de usuario:

[username]
disabled = false
show_always = true

Hay que tener en cuenta que utilizando la configuración por defecto, solo veremos el nombre de usuario root, si lo estamos utilizando. Para el resto de usuarios hay que modificar la configuración.
Si utilizamos un portátil, como es mi caso, nos puede aparecer información sobre el estado de la batería:

[battery]
full_symbol = "🔋"
charging_symbol = "⚡️"
discharging_symbol = "💀"
 
[[battery.display]]
threshold = 10
style = "bold red"
 
[[battery.display]]
threshold = 30
style = "bold yellow"

Nos avisará cuando quede menos del 10% del total utilizando el color rojo y el color amarillo cuando quede menos del 30%, además hemos indicado los símbolos para los avisos.

Trabajando con Git

El módulo git_state se mostrará en directorios que forman parte de un repositorio git y donde hay una operación en progreso, como: REBASING, BISECTING, etc

La documentación en esta parte es bastante extensa.

Por ejemplo podemos añadir una serie de símbolos, para saber el estado del proyecto:

[git_status]
conflicted = "🏳"
ahead = "🏎💨"
behind = "😰"
diverged = "😵"
untracked = "🤷‍"
stashed = "📦"
modified = "📝"
staged.value = "++"
staged.style = "green"
staged_count.enabled = true
staged_count.style = "green"
renamed = "👅"
deleted = "🗑"

Podemos ver los resultados de estos cambios, trabajando con un proyecto:

Trabajando con Git utilizando Starship y Zsh

Y esto es todo, la verdad es que esta extensión de consola tiene mucha miga, y daría para diversas entradas. ¿Tienes experiencia con Starship? ¿Conoces algún producto similar?

Antes de acabar, si quieres más infomo sobre este prompt, puedes consultar la entrada que escribío el amigo Victorhck hace unas semanas:

Cómo instalar el prompt Starship en Linux

Fuentes consultadas:

How to install Powerline fonts into CentOS 7
How the install Firacode