Background
I’ve been a zsh
user for a long time, both on Linux (where it’s not the default) and OS X macOS (where it now is the default).
The first thing I used to do on new machines is port all of my .oh-my-zsh
stuff over.
Oh My Zsh is not bad! This is not mean to slam the project at all.
But I’ve recently (Jan 2025) upgraded to a new Mac Mini M4 and I thought maybe I should see what else is out there. If there’s something that’s good enough without being quite as large in size.
Alternatives
Antidote
Antidote is the only one I’m really messing with right now (Jan 2025).
Antidote is a Zsh plugin manager made from the ground up thinking about performance.
It is fast because it can do things concurrently, and generates an ultra-fast static plugin file that you can easily load from your Zsh config.
The author of Antidote also claims:
You can use antidote to load oh-my-zsh plugins pretty easily.
I’m going to give it a try.
~/.zshrc
autoload -Uz compinit
compinit
. "$HOME/.cargo/env"
zstyle :omz:plugins:iterm2 shell-integration yes
# Set OMZ variables if you want.
ZSH_THEME="kphoen"
# Set any helper functions used by your antidote config.
function is-macos() {
[[ $OSTYPE == darwin* ]]
}
# source antidote
source ~/.antidote/antidote.zsh
# initialize plugins statically with ${ZDOTDIR:-~}/.zsh_plugins.txt
antidote load
~/.zsh_plugins.txt
#.zsh_plugins.txt
# use-omz needs to be FIRST
getantidote/use-omz
# Add in some oh-my-zsh stuff
ohmyzsh/ohmyzsh path:lib
ohmyzsh/ohmyzsh path:plugins/colored-man-pages
ohmyzsh/ohmyzsh path:plugins/docker-compose
ohmyzsh/ohmyzsh path:plugins/gh
ohmyzsh/ohmyzsh path:plugins/git
ohmyzsh/ohmyzsh path:plugins/git-prompt
ohmyzsh/ohmyzsh path:plugins/rsync
ohmyzsh/ohmyzsh path:plugins/ssh
# Add macOS specific plugins
ohmyzsh/ohmyzsh path:plugins/brew conditional:is-macos
ohmyzsh/ohmyzsh path:plugins/macos conditional:is-macos
ohmyzsh/ohmyzsh path:plugins/iterm2 conditional:is-macos
# zsh-users
zsh-users/zsh-autosuggestions
zsh-users/zsh-syntax-highlighting