My Shell Setup

3 minute read Published: 2024-10-02

If you've seen any of my videos, you know that I have a somewhat...nontraditional shell setup. I thought I might take a moment to explain why I set it up the way I did, and how.

I don't care, just give me the code!

Okay okay, here's the repo for the setup—at least on Ubuntu-derivative Linux distros. I'm planning on adding more as separate branches.


Shell: Fish

I use fish, and have for a long long time now. It's just a comfortable, easy-to-use shell with sane autocomplete. It's available everywhere, and always one of the first things I install on a new system.

Prompt: Starship

The built-in prompt for Fish is great, and there are lots of customization options, like Oh My Posh, and oh-my-fish., which was once my own preference for shell customization. However, these days, I've found that Starship works extremely well. It's easy to install, and super easy to customize. I've gone to the trouble of making a very customized prompt, that cleanly shows code and Git information inline.

Starship prompt showing details

Note that it also shows Git status. If it looks a little to you like LCARS, well, I'm just fine with that.

Star Trek LCARS interface

What can I say? I love a rounded corner

Font: SauceCodePro

Starship has a requirement that you use a Nerd Font to handle icons and symbology. I use SauceCodePro, a derivative of Source Code Pro. It's clean and it works, but feel free to pick another Nerd Font if you like.

Terminal: Alacritty

You may be noticing a bit of a pattern here, in that I'm preferring things written (or in fish's case, being rewritten) in Rust. Guilty as charged. In addition to enjoying writing software in the language myself, I'm an ardent supporter of others who do. Also, it turns out the tools are well-designed.

Alacritty does not have all the bells and whistles of some terminal emulators. That's a large part of why I like it. It supports modern colors, etc., has a ton of customization options, but never gets in your face. It's just enough tool, which is what you want from a terminal, in my opinion.

History: Atuin

This is a new addition, but I'm quite enjoying it. Atuin is an alternative shell history that is much easier to search than the old Ctrl+R. It can even be synced between machines (although I would not do that). Not much more to say on this one, other than I've found it useful and worth an install.

Use What Works

This might seem like a bit of a faff, but I've tried my best to keep this setup to a reasonable size. With just a little bit of effort, your Linux command line experience can go from okay to joyful.

That being said, as always, you should not make changes to your toolset just to shake things up. If something's working for you, stick with it until it isn't. But if you have some desire to change your shell and choose to experiment with these tools, I hope you enjoy them at much as I do.