Blog

#Starship

Startship is a "cross-shell prompt", a cool way to customize the look of your shell, but also good to add some helpful information, for example the current git branch, Node or Python versions, and much more...

#Installation

Starship is available for many operating systems:

  • Android
  • BSD
  • Linux
  • macOS
  • Windows

and even more shells:

  • Bash
  • Cmd
  • Elvish
  • Fish
  • Ion
  • Nushell
  • PowerShell
  • Tcsh
  • Xonsh
  • Zsh

If you can't find yourself at this list, check out the Advanced Installation.


As the Installation Guide is quite good, I will only show the guides for Linux and MacOS.

For any other installation options, or shell, please check the Starship Installation Guide

  1. Install Starship
Linux
curl -sS https://starship.rs/install.sh | sh
MacOS
# same as linux, or:
brew install starship
  1. Configure the shell to start Starship

Add these lines to your shell's configuration file:

shelllocationcommand
bash~/.bashrceval "$(starship init bash)"
fish~/.config/fish/config.fishstarship init fish
zsh~/.zshrceval "$(starship init zsh)"
Elvish~/.elvish/rc.elveval (starship init elvish)
Ion~/.config/ion/initrceval $(starship init ion)

When you open a new shell, you should now see the new prompt.

  1. Configure Starship

For customization, check out the Starship Config information.

All Starship configuration is done it the following file (you need to create it first):

~/.config/starship.toml

For more information about TOML, see their Github Repo

#My Starship Configuration

starship.toml (Old)
~/.config/starship.toml
  # custom format
  format = '''
  [┌── $shell─────────────── $memory_usage ──> $nodejs $python](bold green)
  [│](bold green)$sudo$username$hostname$localip$directory$character$git_branch$git_metrics$cmd_duration
  [└ $battery ─>](bold green) '''
 
  #format = '$all$directory$character'
 
  # Wait 10 milliseconds for starship to check files under the current directory.
  scan_timeout = 10
  command_timeout = 500
  add_newline = true
 
 
 
  [shell]
  fish_indicator = 'fish'
  bash_indicator = 'bash'
  unknown_indicator = 'unknwn'
  style = 'cyan bold'
  disabled = false
 
  [username]
  style_user = 'green bold'
  format = ' [$user@]($style)'
  disabled = false
  show_always = true
 
  [sudo]
  style = 'bold red'
  format = ' [sudo](bold red)'
  disabled = false
 
  [python]
  symbol = ''
  format = 'Python [$version [\($virtualenv\)](dimmed yellow)](bold dimmed green)'
  pyenv_version_name = true
  detect_files = ['requirements.txt', '__init.py__', 'setup.py']
  detect_extensions = ['py']
  detect_folders = []
 
  [nodejs]
  format = 'Node [$version](bold dimmed green)'
 
  [memory_usage]
  disabled = false
  threshold = -1
  format = '$ram_pct'
  symbol = ''
  style = 'bold dimmed green'
 
  [localip]
  ssh_only = false
  format = '[@$localipv4](bold yellow) '
  disabled = false
 
  [hostname]
  ssh_only = false
  ssh_symbol = 'ssh:'
  format = '[$ssh_symbol](bold dimmed green)[$hostname](bold dimmed green)'
  trim_at = ''
  disabled = false
 
  [git_metrics]
  disabled = false
  format = ' [+$added](bold green)[-$deleted](bold red)'
 
  [git_branch]
  format = '[$branch(:$remote_branch)]($style)'
  style = 'bold purple'
 
  [fill]
  symbol = '-'
  style = 'bold green'
 
  # time of command
  [cmd_duration]
  min_time = 500
  format = ' [$duration](bold yellow)'
 
  [directory]
  fish_style_pwd_dir_length = 5
  disabled = false
  truncation_length = 5
  truncation_symbol = '…/'
  style = 'bold blue'
 
  # promt char
  [character]
  success_symbol = '[-->](bold green)'
  error_symbol = '[-->](bold red)'
 
  # Disable the package module, hiding it from the prompt completely
  [package]
  disabled = true
 
 
  # battery
  [battery]
 
  full_symbol = '^'
  charging_symbol = '+'
  discharging_symbol = '-'
 
  [[battery.display]]
  threshold = 20
  style = 'bold red'
 
  [[battery.display]]
  threshold = 50
  style = 'bold orange'
 
  [[battery.display]]
  threshold = 100
  style = 'bold green'

starship.toml (New)
~/.config/starship.toml
  #                                              #
  # Starship Config by a3chron, catppuccin theme #
  #                                              #
 
  palette = "catppuccin_mocha"
 
  # custom format
  format = """
  [╭─ $shell─────────────── $memory_usage ──╌╌ $nodejs $python $fill ╌╌─╮](bold overlay0)
  [├╌](bold overlay0)$sudo$username$hostname$localip$directory$read_only$git_branch$git_metrics [$fill $cmd_duration ┘](bold overlay0)
  [╰─ $battery $character](bold overlay0) """
 
  #format = '$all$directory$character'
 
  # Wait 10 milliseconds for starship to check files under the current directory.
  scan_timeout = 10
  command_timeout = 500
  add_newline = true
 
  # Catppuchin Theme
 
  [palettes.catppuccin_mocha]
  rosewater = "#f5e0dc"
  flamingo = "#f2cdcd"
  pink = "#f5c2e7"
  mauve = "#cba6f7"
  red = "#f38ba8"
  maroon = "#eba0ac"
  peach = "#fab387"
  yellow = "#f9e2af"
  green = "#a6e3a1"
  teal = "#94e2d5"
  sky = "#89dceb"
  sapphire = "#74c7ec"
  blue = "#89b4fa"
  lavender = "#b4befe"
  text = "#cdd6f4"
  subtext1 = "#bac2de"
  subtext0 = "#a6adc8"
  overlay2 = "#9399b2"
  overlay1 = "#7f849c"
  overlay0 = "#6c7086"
  surface2 = "#585b70"
  surface1 = "#45475a"
  surface0 = "#313244"
  base = "#1e1e2e"
  mantle = "#181825"
  crust = "#11111b"
 
 
  [shell]
  fish_indicator = 'fish'
  bash_indicator = 'bash'
  unknown_indicator = 'unknwn'
  style = 'peach'
  disabled = false
 
  [username]
  style_user = 'peach bold'
  format = ' [$user@]($style)'
  disabled = false
  show_always = true
 
  [sudo]
  format = ' [sudo](bold red)'
  disabled = false
 
  [python]
  symbol = ''
  format = '[Python](bold green) [$version [\($virtualenv\)](dimmed green)](bold dimmed green)'
  pyenv_version_name = true
  detect_files = ['requirements.txt', '__init.py__', 'setup.py']
  detect_extensions = ['py']
  detect_folders = []
 
  [nodejs]
  format = '[Node](bold lavender) [$version](bold dimmed lavender)'
 
  [memory_usage]
  disabled = false
  threshold = -1
  format = '[$ram_pct]($style)'
  symbol = ''
  style = 'dimmed peach'
 
  [localip]
  ssh_only = false
  format = '[@$localipv4](bold overlay0) '
  disabled = false
 
  [hostname]
  ssh_only = false
  ssh_symbol = 'ssh:'
  format = '[$ssh_symbol](bold dimmed maroon)[$hostname](bold dimmed peach)'
  trim_at = ''
  disabled = false
 
  [git_metrics]
  disabled = false
  format = ' [+$added](bold green)[-$deleted](bold red)'
 
  [git_branch]
  format = '[$branch(:$remote_branch)]($style)'
  style = 'bold mauve'
 
  [fill]
  symbol = ' '
  style = 'bold base'
 
  # time of command
  [cmd_duration]
  min_time = 500
  format = ' [$duration](bold yellow)'
 
  [directory]
  fish_style_pwd_dir_length = 5
  disabled = false
  truncation_length = 5
  truncation_symbol = '…/'
  read_only = ' read-only'
  read_only_style = 'bold dimmed teal'
  style = 'bold teal'
 
  # promt char
  [character]
  success_symbol = '[──╌╌](bold overlay0)'
  error_symbol = '[──╌╌](bold red)'
 
  # Disable the package module, hiding it from the prompt completely
  [package]
  disabled = true
 
 
  # battery
  [battery]
 
  full_symbol = '◉ '
  charging_symbol = '⦿ '
  discharging_symbol = '⦾ '
 
  [[battery.display]]
  threshold = 20
  style = 'red'
 
  [[battery.display]]
  threshold = 100
  style = 'peach'

starship.toml v3 (catppuccin, blue gradient)
~/.config/starship.toml
  #                                              #
  # Starship Config by a3chron, catppuccin theme #
  #                                              #
 
  palette = "catppuccin_mocha"
 
  # custom format
  format = """
  [╭─ $shell─────────────── $memory_usage ──╌╌ $nodejs$python$ocaml $fill ╌╌─╮](overlay0)
  [├╌](overlay0)$sudo$username$hostname$localip$directory$read_only$git_branch$git_metrics [$fill $cmd_duration ┘](overlay0)
  [╰─ $battery $character](overlay0) """
 
  #format = '$all$directory$character'
 
  # Wait 10 milliseconds for starship to check files under the current directory.
  scan_timeout = 10
  command_timeout = 500
  add_newline = true
 
  # Catppuchin Theme
 
  [palettes.catppuccin_mocha]
  rosewater = "#f5e0dc"
  flamingo = "#f2cdcd"
  pink = "#f5c2e7"
  mauve = "#cba6f7"
  red = "#f38ba8"
  maroon = "#eba0ac"
  peach = "#fab387"
  yellow = "#f9e2af"
  green = "#a6e3a1"
  teal = "#94e2d5"
  sky = "#89dceb"
  sapphire = "#74c7ec"
  blue = "#89b4fa"
  lavender = "#b4befe"
  text = "#cdd6f4"
  subtext1 = "#bac2de"
  subtext0 = "#a6adc8"
  overlay2 = "#9399b2"
  overlay1 = "#7f849c"
  overlay0 = "#6c7086"
  surface2 = "#585b70"
  surface1 = "#45475a"
  surface0 = "#313244"
  base = "#1e1e2e"
  mantle = "#181825"
  crust = "#11111b"
 
 
  [shell]
  fish_indicator = 'fish'
  bash_indicator = 'bash'
  unknown_indicator = 'unknwn'
  style = 'teal'
  disabled = false
 
  [username]
  style_user = 'teal bold'
  format = ' [$user@]($style)'
  disabled = false
  show_always = true
 
  [sudo]
  format = ' [sudo](bold red)'
  disabled = false
 
  [python]
  symbol = ''
  format = '[Python](bold mauve) [$version [\($virtualenv\)](dimmed mauve)](dimmed mauve)'
  pyenv_version_name = true
  detect_files = ['requirements.txt', '__init.py__', 'setup.py']
  detect_extensions = ['py']
  detect_folders = []
 
  [nodejs]
  format = '[Node](bold lavender) [$version](bold dimmed lavender) '
 
  [ocaml]
  format = '[Ocaml](bold pink) [$version](bold dimmed pink) '
 
  [memory_usage]
  disabled = false
  threshold = -1
  format = '[$ram_pct]($style)'
  symbol = ''
  style = 'dimmed blue'
 
  [localip]
  ssh_only = false
  format = '[@$localipv4](bold dimmed blue) '
  disabled = false
 
  [hostname]
  ssh_only = false
  ssh_symbol = 'ssh:'
  format = '[$ssh_symbol](bold dimmed maroon)[$hostname](bold dimmed sapphire)'
  trim_at = ''
  disabled = false
 
  [git_metrics]
  disabled = false
  format = ' [+$added](bold teal)[-$deleted](bold pink)'
 
  [git_branch]
  format = '[$branch(:$remote_branch)]($style)'
  style = 'bold pink'
 
  [fill]
  symbol = ' '
  style = 'bold base'
 
  # time of command
  [cmd_duration]
  min_time = 500
  format = ' [$duration](bold dimmed flamingo)'
 
  [directory]
  fish_style_pwd_dir_length = 5
  disabled = false
  truncation_length = 5
  truncation_symbol = '…/'
  read_only = ' read-only'
  read_only_style = 'bold dimmed mauve'
  style = 'bold mauve'
 
  # prompt char
  [character]
  success_symbol = '[──╌╌](overlay0)'
  error_symbol = '[──╌╌](red)'
 
  # Disable the package module, hiding it from the prompt completely
  [package]
  disabled = true
 
 
  # battery
  [battery]
 
  full_symbol = '● '
  charging_symbol = '◉ '
  discharging_symbol = '◯ '
 
  [[battery.display]]
  threshold = 20
  style = 'red'
 
  [[battery.display]]
  threshold = 100
  style = 'teal'

0

0