Post

New terminal setup

warp starship fish

Every now and then I reevaluate my terminal setup. I have been using iTerm2 with zsh, oh-my-zsh, and powerlevel10k for a while now. I have been happy with this setup, but after reading about powerlevel10k being archived, I decided to look for something new. Because I needed, you ask? No, not really. I just wanted to try something new (oh, shiny object syndrome 😎).

I have had several tools on my radar for a while now, and I decided to try them out. The tools I wanted to try were warp, starship, and fish.

My current terminal looks like this: warp starship fish

Prompt is from Starship, and the shell with autocomplete is Fish. And Warp gives the blocks and mouse support.

Warp

Warp logo

Warp is calling itself a modern terminal. It allows you to share your terminal with your team members. It is a great terminal, and I highly recommend it. As everything these days, it of course has AI built in. But that is not what I consider the killer feature. The killer feature in my book, is the block feature. For every output from a command, warp creates a separate block, which makes interacting with history very easy.

Warp requires you to sign in, which is really a deal breaker for me. I do not want to sign in to a terminal. I want to be able to use it without an account. I have not found a way to use warp without an account, so I consider this a major trade-off. I really hope they come to their senses, and turn this off as a mandatory action. However, I am not overly optimistic about this, as they instead try to justify it with a blog post. I am not happy with this trade-off, but I am willing to live with it for now. But only for now.

If this is a total deal breaker for you, I recommend you check out Alacritty, iTerm2, or Wezterm. I cannot claim long term with Alacritty or Wezterm, but I have used iTerm2 for a long time. You can still user Starship and Fish with these terminals, and still get a great setup.

Install Warp

To install Warp, you can use Homebrew. Run the following command:

1
brew install warp

Configuration for Warp

To compensate for the log-in and tracking, you can tun off all etrics, which I recommend you do. Also set Warp to use PS1 prompt, to get full effect of Starship. I changed the theme to Gruvbox Dark, from the settings menu.

Starship

Starship logo

Starship is a minimal, blazing-fast, and infinitely customizable prompt for any shell. Coming from powerlevel10k, I was a bit skeptical about starship. But that skepticism was quickly put to rest. Starship is a great prompt, and I am really enjoying it. It is very fast, and I have not had any issues with it. I highly recommend it. I ended up using a starship preset called Gruvbox Rainbow Preset. I did a few tweaks to it, but nothing major. My tweaks can be found in my dotfiles (copy to ~/.config/starship.toml). Or, you can play around with the starship configurations yourself.

Install Starship

To install Starship, you can use Homebrew. Run the following command:

1
brew install starship

Fish

Fish logo

The last piece of the puzzle is the Fish shell. I have been using zsh for a long time now, and I have been happy with it. Fish has been on that mental TODO list for a while now, and I finally decided to pull the trigger and test it out. So far it is looking all good, with lots of nice features. I am still a bit skeptical that is is not fully POSIX compliant, but I am willing to give it a try. I am not that heavy scripter, so the POSIX compliance is not that important to me. I am more interested in the features, and the features are great. I highly recommend you check it out.

Install Fish

To install Fish, you can use Homebrew. Run the following command:

1
brew install fish

Configuration for Fish

If you are using MacOS, and Homebrew, as I am, you need to add a line to you fish configuration file. Add the following lines to ~/.config/fish/config.fish:

1
2
3
4
5
6
7
# If using Homebrew
fish_add_path "/opt/homebrew/bin/"

# If using asdf
echo -e "\nsource "(brew --prefix asdf)"/libexec/asdf.fish" >> ~/.config/fish/config.fish

starship init fish | source

First line adds the Homebrew path to the fish path. The second line adds asdf support. And the third line initializes starship for fish.

Default shell

To set Fish as the default shell, run the following command:

1
2
echo $(which fish) | sudo tee -a /etc/shells
chsh -s $(which fish)

Conclusion

The combination of Warp, Starship, and Fish is a great setup. I am really enjoying it, and I highly recommend you check it out. But as all developer tools, you should not just copy what a random dude on Internet is saying. Test is out for yourself, and see if it fits your workflow. I am really enjoying it, and I am looking forward to using it more. I hope you will enjoy it as well. Happy coding! 🚀

This post is licensed under CC BY 4.0 by the author.