馃殌 Personaliza tu terminal con starship

馃惂 Linux
馃搮 2023-10-03

Continuando el post anterior de 馃帹 Personaliza Zsh, hoy abordamos un complemento que eleva la experiencia de la terminal a un nivel superior: Starship.

Starship no es simplemente otra shell. Es una declaraci贸n de intenciones en el vasto universo de las interfaces de l铆nea de comandos. Gracias al lenguaje de programaci贸n Rust, reconocido por su seguridad y rendimiento, Starship proporciona una capa adicional sobre tu terminal actual, brindando posibilidades de personalizaci贸n hasta ahora inexploradas. Ya sea que utilices bash, zsh, fish o cualquier otro int茅rprete, Starship se integra de manera armoniosa, liberando el potencial oculto de tu terminal.

驴Qu茅 hace a Starship tan especial? Desde indicadores de estado para tus repositorios git, pasando por integraciones espec铆ficas con herramientas y lenguajes de programaci贸n, hasta incluso la capacidad de mostrar el contexto de tu cuenta AWS, Starship redefine lo que significa trabajar con la CLI.

Para aquellos que usan distribuciones basadas en Debian, la instalaci贸n es directa:

curl -sS https://starship.rs/install.sh | sh

Durante mi experiencia personal con Starship, not茅 que para aprovechar al m谩ximo sus capacidades, fue necesario instalar la fuente Caskaydia Cove Nerd Font

Una vez instalada la fuente, es esencial hacer algunos ajustes en el archivo ~/.zshrc:

# ZSH_THEME="<tema>"

Acto seguido agrega la siguiente l铆nea al final:

eval "$(starship init zsh)"

No deber铆a ser necesario, pero si no funciona, reinicia la terminal.

Mi configuraci贸n personal de Starship se basa en el Pastel Powerline Preset. Sin embargo, he realizado algunas modificaciones en el archivo ~/.config/starship.toml para adaptarlo a mis necesidades. Aqu铆 te presento una muestra de c贸mo qued贸:

format = """
[顐禲(#1d1a2f)\
$os\
$username\
[顐癩(bg:#8bd450 fg:#1d1a2f)\
$directory\
[顐癩(fg:#8bd450 bg:#734f9a)\
$git_branch\
$git_status\
[顐癩(fg:#734f9a bg:#FFB346)\
$aws\
[顐癩(fg:#FFB346 bg:#3f6d4e)\
$c\
$elixir\
$elm\
$golang\
$gradle\
$haskell\
$java\
$julia\
$nodejs\
$nim\
$rust\
$scala\
$python\
$sudo\
[顐癩(fg:#3f6d4e bg:#965fd4)\
$docker_context\
[顐癩(fg:#965fd4 bg:#16a687)\
$time\
$status\
[顐 ](fg:#16a687)\
"""

# Disable the blank line at the start of the prompt
add_newline = false

[os]
style = "bg:#1d1a2f"
disabled = false # Disabled by default

[directory]
style = "bg:#8bd450"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "鈥/"

[directory.substitutions]
"Documents" = "蟀垯 "
"Downloads" = "飥 "
"Music" = "飥 "
"Pictures" = "飥 "
"Public" = "飥 "
"Templates" = "飪 "
"Videos" = "飥 "
"Desktop" = "飫 "
"Home" = "飥 "
"Root" = "飥 "

[aws]
symbol = '馃叞 '
style = "bg:#FFB346"
format = '[ $symbol ($profile) ]($style)'

[c]
symbol = "顦 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[docker_context]
symbol = "飳 "
style = "bg:#965fd4"
format = '[ $symbol $context ]($style) $path'

[elixir]
symbol = "顗 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[python]
symbol = "顦 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[git_branch]
symbol = "顪 "
style = "bg:#734f9a"
truncation_length = 8
format = '[ $symbol $branch ]($style)'

[git_status]
conflicted = '馃彸'
ahead = '鈴${count}'
behind = '馃悓${count}'
diverged = '馃樀 鈬${ahead_count}鈬${behind_count}'
up_to_date = '鉁'
untracked = '馃し'
stashed = '馃摝'
modified = '馃摑'
style = "bg:#734f9a"
renamed = '馃憛'
deleted = '馃棏'
format = '[$all_status$ahead_behind ]($style)'

[golang]
symbol = "顦 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[gradle]
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[haskell]
symbol = "顫 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[java]
symbol = "顗 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[julia]
symbol = "顦 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[nodejs]
symbol = "顪"
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[nim]
symbol = "蟀啣 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[rust]
symbol = "顬"
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'

[scala]
symbol = "顪 "
style = "bg:#3f6d4e"
format = '[ $symbol ($version) ]($style)'


[time]
disabled = true
time_format = "%R" # Hour:Minute Format
style = "bg:#16a687"
format = '[ 馃晲 $time ]($style)'

[status]
style = 'bg:#16a687'
symbol = '鉂 '
format = '[$symbol]($style)'
map_symbol = true
disabled = false

Para ver todos los m贸dulos disponibles, puedes consultar la documentaci贸n.

Si eres usuario de Vscode, te recomiendo ajustar la configuraci贸n de la terminal para aprovechar la fuente:

{
  "terminal.integrated.fontFamily": "CaskaydiaCove Nerd Font"
}

El resultado final es simplemente est茅tico y funcional, con colores que reflejan la paleta de este blog. Adem谩s, ya est谩 preconfigurado para varios lenguajes, por lo que no necesitas agregar nada m谩s.

terminal-example

Al combinar Starship con zsh, se mantienen todos los beneficios y plugins de oh-my-zsh. Espero que esta gu铆a te inspire a personalizar a煤n m谩s tu espacio de trabajo y mejorar tu productividad. 隆Hasta la pr贸xima!