My terminal emulator and shell setup for macOS, Linux, and Windows. AKA "Ultimate Terminal Setup" for me.
My Wishlist
- Give serious effort to try Ghostty 👻 once it's out of private beta.
- Give Warp another shot. I tried it years ago and stayed with iTerm2, though warp has better AI support and says it's much faster.
New stuff I'm checking out in 2022
- Eternal Terminal to replace Mosh. I like
mosh
, butet
has scrolling support! - GitHub's VSCode theme, for iTerm. I've settled on GitHub's light/dark them in VSCode for now, and wanted my iTerm to match.
exa
, a modern replacement forls
- Starship is my daily shell theme. I love it!
Terminal Emulator
The GUI that emulates a text terminal, and runs a shell
- macOS: iTerm2
- Linux: Tilix
- Windows 10: Windows Terminal
- Windows 7/8: cmder
Shell and Prompt
Z shell (zsh) is my favorite. Here's how to make it awesome.
- macOS: Now the default in 10.15+ at
/bin/zsh
or manually install a newer version withbrew install zsh
to/usr/local/bin/zsh
. Default is fine in 99% of cases. - Linux: If
which zsh
shows nothing, then install with apt/yum/apk. Next, change your login shell withchsh -s $(which zsh)
- Windows 10: I recommend WSL/WSL2 with Ubuntu and zsh installed there, rather than a zsh.exe alternative.
- Zsh "Configuration Manager": Oh-My-Zsh adds a bunch of bonus features and plugins to your shell. Check their GitHub wiki for more info and how to customize.
- Oh-My-Zsh has themes, which mostly affect the prompt features like git branch, current directory, etc. but also has colors you can tweak (see below.)
- Here's my custom Zsh prompt theme with 🐳 emoji and a "presentation mode" option. I use this to keep the shell minimal without distractions for presenting.
- Daily theme: Starship!
Colors
I like having matching true-color themes in all my shell apps.
- GruvBox is my default for everything. I'm now using the community fork which is better maintained. It supports light and dark modes, as well as various contrast options. The contrib repo has the theme for different app formats, including iTerm2, SpaceVim, Tilix, and tmux.
- True Color enabled in iTerm2, Zsh, and Vim. Also, check the Gruvbox notes on true color. In 2024 I think this works by default with things in this list, but it's good to know ways to test it.
- Assuming you're using Oh-My-Zsh above, you can replace the default theme in
.zshrc
envZSH_THEME
with this Gruvbox colored one, or just tweak the colors of the full theme list. This really only affects the prompt, not the terminal colors, which are controlled by your terminal emulator. - INSANE Wild Cherry theme. I love this, but is it a daily theme? Not sure.
Shell Editor
- Neovim (install info), which you run as
nvim
once installed (I add shell aliases foralias n=nvim
andalias vim=nvim
. to my~/.zshrc
- In 2024 I discovered Neovim Kickstart (and this great video by the author) as the best way to get started with everything.
- My Old Plugin Manager "vim distro": SpaceVim makes good feature-rich defaults (works with both vim/nvim). I stopped using it because of Neovim Kickstart above.
Fonts
Some fonts are designed for shells and programming. I only use those.
- Nerd Fonts takes those popular programming fonts and adds extra glyphs and icons for better support in shell tools.
- I prefer using Homebrew to install those fonts on macOS and Linux. You can always just download one or all of them from Nerd Fonts and usually just dbl-clicking a font file in macOS or Windows will install it.
- One of my favorite fonts: Sauce Code Pro Font from Nerd Fonts which gives me Vim + Powerline + icons. That's all you need, but if you're curious: It's based off another mod to support this font with Powerline in VIM, which itself is based off the original Adobe Source Code Pro open source font. Whew, what a rabbit hole. 😵
- Italics enabled in iTerm/Vim. It makes comments easier to visualize I think.
Other Essentials
- Tmux for shell session management (most of this stuff works in Tmux)
- Oh-My-Tmux for much better default Tmux setup. It's great out-of-the-box.
- Mosh for better SSH that auto-reconnects and uses UDP for slow/laggy/lossy.
- SilverSearcher (
ag
from cli) for better shell code search. - bat for color cat output of code and markdown (syntax highlighting.)