updated: 30th of March 2022
published: 18th of May 2020
Over the years I have customised my shell prompt to make it "cool" and "informative". Previously I have used powerline and powerlevel10k . Both were pretty nice, with powerlevel10k being the much faster of the two.
I recently came across the Starship project which looks pretty rad. Starship prompt is "The minimal, blazing-fast, and infinitely customizable prompt for any shell!"
This post will cover getting Starship prompt installed and configured for MAC-OSX Catalina and iTerm2 for the zsh shell.
First you need to install some powerline patched fonts.
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
# Output
Copying fonts...
Powerline fonts installed to /Users/bradmin/Library/Fonts"
# Clean up
cd ..
rm -rf fonts
Install Starship with Homebrew.
brew install starship
Initialise Starship by adding the following to your ~/.zshrc and restarting your shell.
# ~/.zshrc
eval "$(starship init zsh)"
Configure iTerm2 to use a Powerline Font.
Starship uses TOML for its configuration data. Create a starship.toml configuration file.
mkdir -p ~/.config && touch ~/.config/starship.toml
The prompt is configured via "modules". The docs outline the options for each module quite well. A sample configuration file can be found below.
# Replace the "❯" symbol in the prompt with "❯❯"
[character]
format = "[❯❯](bold green) "
success_symbol = "[❯❯](bold green) "
error_symbol = "[❯❯](bold red) "
# Disable the package module, hiding it from the prompt completely
[package]
disabled = true
# Disable the AWS module.
[aws]
disabled = true
# Disable the GCP module.
[gcloud]
disabled = true
# Set the time format
[time]
disabled = false
time_format = "%Y-%m-%d %H:%M:%S"
utc_time_offset = "+10"
# Directory setttings
[directory]
format = "[$path]($style)[$read_only]($read_only_style) "
truncation_length = 4
truncate_to_repo = false
truncation_symbol = "…/"
[username]
disabled = true
[hostname]
ssh_only = false
format = "[$hostname](bold red) [❯](bold green) "
# Workaround for slow prompt with git status
[git_status]
disabled = true
The result is a really nice looking, responsive and informative prompt.
devbox ❯ ~
at 2021-11-07 06:29:18 ❯❯
I found having the git_status module was causing the prompt to respond really slowly. I disabled this module and the response time went back to normal. There is an open issue for this and hopefully it will be resolved in a future release.
The Starship prompt looks like it does what it says on the tin. It's fast, easily customisable and looks great.
https://github.com/powerline/fonts
https://docs.rs/chrono/0.4.7/chrono/format/strftime/index.html
https://github.com/starship/starship/issues/597
https://github.com/starship/starship/issues/301
https://github.com/starship/starship/pull/921
https://github.com/starship/starship/pull/589#issuecomment-546665640