Antidote is an innovative plugin management tool for Zsh (Z Shell). It is designed to simplify the installation, management, and migration of Zsh plugins while maintaining high performance and minimal overhead. Antidote provides a practical solution for users who want to improve productivity and usability in Zsh without relying on complex manual workflows.
One of Antidote’s key advantages is its ability to eliminate manual plugin management and enable seamless migration from Antigen to Zsh. By generating a static plugin file, Antidote significantly reduces shell startup time and ensures consistent behavior across environments.
Prerequisites
Ensure the following components are installed before proceeding:
- Git
- Oh My Zsh
Installing Antidote
Clone the Antidote repository into your Zsh configuration directory:
git clone --depth=1 https://github.com/mattmc3/antidote.git ${ZDOTDIR:-~}/.antidote
Configuring Zsh for Antidote (Ultra High Performance Install)
Edit your ~/.zshrc file using your preferred editor:
nano ~/.zshrc
# or
vi ~/.zshrc
Add the following configuration. This setup uses Antidote’s Ultra High Performance approach by generating a static plugin file:
# ~/.zshrc
# Define the static plugins file generated by Antidote
zsh_plugins=${ZDOTDIR:-~}/.zsh_plugins.zsh
# Ensure the plugin list file exists
[[ -f ${zsh_plugins:r}.txt ]] || touch ${zsh_plugins:r}.txt
# Lazy-load Antidote
fpath+=(${ZDOTDIR:-~}/.antidote)
autoload -Uz $fpath[-1]/antidote
# Regenerate the static plugins file only when the plugin list changes
if [[ ! $zsh_plugins -nt ${zsh_plugins:r}.txt ]]; then
(antidote bundle <${zsh_plugins:r}.txt >|$zsh_plugins)
fi
# Source the generated static plugins file
source $zsh_plugins
Important:
Do not immediately runsource ~/.zshrcafter saving the file.
Creating the Plugin List
Create the plugin list file manually:
touch ~/.zsh_plugins.txt
Populate the file with only the plugins you actually need. Installing unnecessary plugins will degrade Zsh performance and negate the benefits of Antidote’s optimized loading strategy.
Example Plugin Configuration
romkatv/powerlevel10k
romkatv/zsh-bench kind:path
olets/zsh-abbr kind:defer
ohmyzsh/ohmyzsh path:lib
ohmyzsh/ohmyzsh path:plugins/colored-man-pages
ohmyzsh/ohmyzsh path:plugins/magic-enter
ohmyzsh/ohmyzsh path:plugins/copypath
rupa/z
sunlei/zsh-ssh
zsh-users/zsh-completions
zsh-users/zsh-history-substring-search
zsh-users/zsh-autosuggestions
mattmc3/zfunctions
zdharma-continuum/fast-syntax-highlighting kind:defer
Note:
Ensure all plugin names and paths are correct. If a repository or path is invalid, Antidote will fail to locate the plugin.
Applying the Configuration
Once the plugin list is defined, apply the configuration:
source ~/.zshrc
Antidote will:
- Fetch the specified repositories
- Generate a static plugin file
- Automatically re-bundle plugins whenever
.zsh_plugins.txtis updated
Plugin updates can be managed using:
omz update
References
- Oh My Zsh: https://ohmyz.sh/
- Zsh: https://www.zsh.org/
- Antidote: https://getantidote.github.io/
- Powerlevel10k: https://github.com/romkatv/powerlevel10k
Top comments (0)