awesome-zsh-plugins
Status
A collection of ZSH frameworks, plugins, tutorials & themes inspired by the various awesome list collections out there.
Table of Contents
- Disclaimer
- Frameworks
- alf
- ansible-role-zsh
- ant-zsh
- antibody
- antidote
- antigen-hs
- antigen
- awesome-lazy-zsh
- ax-zsh
- deer
- dotzsh
- fresh
- gh-source
- lazy.zsh
- miniplug
- oh-my-zsh
- microzsh
- pms
- prezto
- pumice
- rac
- rat
- ryzshrc
- sheldon
- shellx
- shplug
- thefly
- toasty
- usepkg
- uz
- x-cmd
- xc-manager
- yazt
- yzsh
- zap
- zapack
- zcomet
- zdx-suite
- zeesh
- zef
- zert
- zest
- zflash
- zgem
- zgen
- zgenom
- zi
- zilsh
- zim
- Zinit
- zinit-4
- zit
- zload
- zlugin
- znap
- zoppo
- zpacker
- zpico
- zplug
- zpm
- zr
- zshing
- zsh-dot-plugin
- zsh-mgr
- zsh-unplugged.
- zshPlug
- ztanesh
- ztheme
- ztupide
- zulu
- zush 🦥 - Mid-Performance ZSH Configuration
- Performance
- Setups
- Prerequisites
- Tutorials
- Plugins
- Completions
- Themes
- Fonts
- Installation
- Writing New Plugins and Themes
- Other Resources
- Thanks
Please read the Contributing Guidelines before contributing.
Disclaimer
While I have done my best to not add entries with embedded malicious code, I don't have the time to sift through the source of every entry in the list. Use items from this list at your own risk.
THIS LIST IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Frameworks
These frameworks make customizing your ZSH setup easier.
alf
Alf is an out of this world super fast and configurable framework for ZSH; it's modeled after Prezto and Antigen while utilizing Oh-My-Zsh under the covers; and offers standard defaults, aliases, functions, auto completion, automated updates and installable prompt themes and plugins.
ansible-role-zsh
ansible-role-zsh is an ansible role with zero-knowledge installation. It uses antigen to manage bundles and oh-my-zsh. Can load bundles conditionally. By default it includes the powerlevel9k theme, autosuggestions, syntax-highlighting and fzf-widgets and fzf-marks. Fully customizable.
ant-zsh
Ant-zsh is a tiny and lightweight ZSH configuration environment for special customization needs. It includes plugins, themes and a basic convenient setup.
antibody
Antibody is a faster and simpler antigen written in Golang. More details are available at http://getantibody.github.io/.
antidote
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 include in your ZSH config.
It is written natively in ZSH, is well tested, and picks up where Antibody left off.
use-omz enables easy use of Oh-My-ZSH with antidote.
antigen-hs
antigen-hs is a replacement for antigen optimized for a low overhead when starting up a zsh session. It will automatically clone plugins for you.
antigen
Antigen is a small set of functions that help you easily manage your shell (ZSH) plugins, called bundles. The concept is pretty much the same as bundles in a typical vim+pathogen setup. Antigen is to ZSH, what Vundle is to vim. Antigen can load oh-my-zsh themes and plugins and will automatically clone them for you.
awesome-lazy-zsh
Awesome-Lazy-ZSH is a simplified and customizable ZSH setup tool for managing plugins and themes. It streamlines your terminal environment with an easy-to-use CLI interface, allowing you to manage .zshrc configurations effectively. Features
- Plugin Management: Install and manage plugins easily.
- Theme Customization: Apply a variety of Zsh themes.
- Backup and Restore: Safeguard your .zshrc configurations.
- Interactive CLI: User-friendly setup options.
- Dependency Management: Automatically checks for Git, Node.js, and Homebrew.
ax-zsh
Ax-ZSH is a modular configuration system for ZSH. It provides sane defaults and is extendable by plugins.
Ax-ZSH integrates well with Powerlevel10k and other extensions, including plugins compatible with oh-my-zsh.
deer
A minimalist ZSH plugin manager.
dotzsh
Dotzsh strives to be platform and version independent. Some functionality may be lost when running under older versions of ZSH, but it should degrade cleanly and allow you to use the same setup on multiple machines of differing OSes without problems.
fresh
fresh is a tool to source shell configuration (aliases, functions, etc) from others into your own configuration files. We also support files such as ackrc and gitconfig. Think of it as Bundler for your dot files.
gh-source
gh-source is a plugin manager for people who don't like plugin managers. It's a simple shell function that downloads and installs plugins from GitHub as part of the sourcing step. It's designed to be used with zsh, but it should work with any shell.
lazy.zsh
With lazy.zsh, your .zshrc is the single source of truth. Reproduce the same ZSH setup anywhere using the same config; no frameworks, no auto-sourcing, no hidden behavior. lazy.zsh installs, updates, and tracks plugins, while you control exactly how and when they are loaded.
miniplug
miniplug is a minimalistic plugin manager for ZSH.
- No crashes or double plugin loading when re-sourcing
.zshrc - Unlike other frameworks, Miniplug does not pollute your
$PATH - Only does the bare minimum for managing plugins
oh-my-zsh
oh-my-zsh is a community-driven framework for managing your ZSH configuration. Includes 120+ optional plugins (rails, git, macOS, hub, capistrano, brew, ant, MacPorts, etc), over 120 themes to spice up your morning, and an auto-update tool that makes it easy to keep up with the latest updates from the community.
microzsh
A lightweight alternative to oh-my-zsh, improving load times while still keeping essential features like themes and plugins.
pms
PMS allows you to manage your shell in a way to that helps decrease setup time and increases your productivity. It has support for themes (change the way your shell looks), plugins (adds functionality to your shell), and dotfile management.
The PMS framework also allows you to use the same framework in different shells. Use ZSH on your personal laptop, and use bash on remote servers. Wanna try fish? Go ahead, try out different shells.
prezto
Prezto enriches the ZSH command line interface environment with sane defaults, aliases, functions, auto completion, and prompt themes. There are some prezto-specific plugins at https://github.com/belak/prezto-contrib.
pumice
Pumice is a lightweight plugin manager for ZSH.
rac
Most ZSH plugin managers are bloated. They try to do too much - dependency graphs, deferred loading, configuration injection - and in the process, they slow down your shell.
The reality is, most users never use even 80% of these features. rac is deliberately minimal. All it does is download plugins and update plugins.
rat
A lightweight, fast, and reproducible plugin manager for ZSH. Made with 🐭 & 🦀 — no magic, no heavy frameworks.
Features 🐭✨
- 🚀 Simple setup
- Install with a single curl line
- Just add one eval line in .zshrc to start using it
- ⚙️ Configurable and reproducible
- Simple TOML-based configuration
- Automatic plugin load order control
- 🐙 GitHub integration
- Fetches plugins from GitHub repositories
- Supports branches, tags, and commits
- Handles Git submodules automatically
- ⚡️ Lightweight and fast
- Parallel plugin sync
- Built in Rust 🦀
- 🔄 Seamless updates
- Self-upgrade -Plugin sync
ryzshrc
ryzshrc is a smart, innovative plugin manager like Oh My Zsh, designed to enhance your terminal experience with professional and cool features. It boosts productivity by providing efficient shell management, sleek themes, and powerful plugins. Perfect for developers seeking a modern and intelligent way to work with their terminal
sheldon
sheldon is a fast, configurable, shell plugin manager.
- It can manage:
- Any
gitrepository.- Branch/tag/commit support.
- Extra support for GitHub repositories.
- Extra support for Gists.
- Arbitrary remote files, simply specify the URL.
- Local plugins, simply specify the directory path.
- Any
- Highly configurable install methods using handlebars templating.
- Super-fast parallel installation.
- Configuration file using TOML syntax.
- Uses a lock file for much faster loading of plugins.
shellx
A generic script/plugin loader for multiple shells, including ZSH.
- Has a "plugins" system that allows you to do things like installing a package, cloning a repository, export variables, run commands. And cross-shell compatible.
- Has an unified way of configuring shells, it uses one of many approaches to standardize home folder with a set of predefined files and folders. it defines a
~/binfolder between others that is auto-included inPATH, so it helps you to use always same approach on all your systems. - Having different plugins in different folders, which allows loading certain folders in certain environments to load variables or any other special configurations. It also allows you to clone other users plugins easily.
- It provides a minimal set of libraries and binaries bundled inside which offers a set of functions/aliases/etc. based on SH/BASH (compatible with other shells) to use in plugins contexts to do certain stuff easily.
shplug
shplug is an easy solution for managing your shell environments. Works with both bash and zsh. Makes it easy to sync your environment across multiple machines with a git repository.
thefly
TheFly is a bash/zsh/ksh plugin manager and env teleporter
Makes your shell env and plugins available everywhere (hosts/users)!
toasty
Toasty is a ZSH framework made to facilitate management, not dictate it.
usepkg
Usepkg is a minimal declarative zsh plugin manager.
Supports:
- fetch & load plugin(s) with declared methods
- list, check, reload, update & remove plugin(s) with commands
Dependencies:
zsh- gnu coreutils
git(optional, if you want to clone git repositories from internet)curl(optional, if you want to fetch a script file by url)
Pros:
- extremely simple and light, but enough to use.
- compared to similar packages like
zplug, it has a much simpler configuration grammar.
uz
uz is a micro plugin manager for ZSH
x-cmd
x-cmd is a toolset implemented using posix shell and awk. It is very small in size and offers many interesting features. Here is a milestone demo: x-cmd.com
Tools Provided by x-cmd:
- Wrappers for Common Commands (e.g., cd, ip, ps, tar, apt, brew): These wrapped commands are more intelligent and easier to use compared to the native commands.
- Lightweight Package Management Tool: We have implemented a lightweight package management tool using shell and awk. Through it, you can quickly obtain most common software tools, such as jq, 7za, bat, nvim, python, node, go, etc.
- CLI for Useful Websites (e.g., github.com, cht.sh): We have wrapped their APIs using shell and awk for daily use and to obtain corresponding services in scripts.
- AI Tools: We provide CLIs for ChatGPT, Gemini, Jina.ai, etc., and have wrapped corresponding shortcut commands for different application scenarios, such as
@geminifor chatting with Gemini AI and@zhfor using AI to translate specified content or command results.
xc-manager
XC-Manager is a Zsh-native command vault designed to bridge the gap between temporary shell history and permanent aliases. It allows you to store complex one-liners with descriptions and recall them via an interactive TUI.
Features Provided by XC-Manager:
- Command Vaulting: Save any command directly from your history into thematic vaults (e.g., work, sysadmin, media).
- FZF TUI: Search and execute vaulted commands instantly using a robust, TTY-safe
fzfinterface. - Alias Promotion: Promote frequently used vaulted commands to permanent system aliases without manually editing configuration files.
- Global Search: Query across all vault files simultaneously to find that one specific flag or complex pipe string.
yazt
Yazt is a simple ZSH theme manager in maintenance that is compatible with nearly everything. You can use prompts in plugins, mix 'n' match two themes and with a few modifications, you can even use it in bash.
yzsh
yzsh is a simple ZSH framework for managing plugins, themes, functions, aliases and environment variables.
zap
:zap:zap is a minimal ZSH plugin manager.
zapack
zapack is a basic fast minimal ZSH plugin loader.
zcomet
zcomet is a minimalistic ZSH plugin manager that gets you to the prompt surprisingly quickly without caching (see the benchmarks). In addition to loading and updating plugins stored in git repositories, it supports lazy-loading plugins (further reducing startup time) as well as downloading and sourcing code snippets.
zdx-suite
Interactive, fzf-powered developer workflows and a custom plugin loader for Zsh, built for Oh My Zsh.
Open zdx when you want to explore, or route directly to a suite when you already know the workflow. Eight suites, a dependency doctor, and a plugin manager share one terminal-first interface.
zeesh
Zeesh is a cross-platform ZSH framework. It's similar to, but incompatible with, oh-my-zsh. It has a modular plugin architecture making it easy to extend. It has a rich set of defaults, but is designed to be as lightweight as possible.
zef
Declarative zsh plugin manager in Nix, targeting <50 ms cold start. Inspired by nvf, built around the idea that if the entire shell config is known at build time, the runtime can be a thin shim.
zert
zert is a pure-ZSH plugin manager built around a simple idea: your plugins should be declared directly in your .zshrc, pinned to exact commits, and reproducible on any machine — just like npm does for Node projects.
No config files to maintain. No subcommands to memorize for adding plugins. No external tools. Just ZSH, git, and curl.
Features
- Inline, declarative syntax — declare plugins directly in
.zshrc. No separate config file, no add command. - Lockfile-based reproducibility —
zert.lockpins every plugin to an exactgitcommit SHA. Commit it. Share it. Reproduce it anywhere. - Parallel installs — clones multiple plugins simultaneously using
git clone --filter=tree:0for minimal bandwidth. - Sequential, ordered loading — plugins are sourced in exactly the order you declare them. Always.
- Zero external UI dependencies — real-time progress bars and spinners built entirely from ANSI escape codes.
- Self-managing — Zert updates itself with
zert update zert, managed as a first-class plugin. - Oh-My-Zsh / Prezto compatibility — load OMZ libs and Prezto modules without installing either framework.*
zest
Zest is a productivity framework for ZSH aimed at human-readable output: sysinfo, topmem and topcpu render color bars aggregated per program, notes and todos live in the terminal, Hacker News headlines are machine-translated to Portuguese, git gets a friendly wrapper, and updateall tries 12 package managers (apt, dnf, pacman, zypper, apk, flatpak, snap, npm, pipx, uv, pip, mise) and skips the missing ones. The installer runs without root — it fetches 16 CLI tools (fzf, ripgrep, bat, eza, delta, lazygit, zoxide, atuin, mise and friends) into ~/.local/bin, auto-installs missing dependencies via sudo/su, and works with Oh My Zsh, plain ZSH or any other framework. Everything is guarded, idempotent and reversible, and the documentation is in Portuguese.
zflash
zflash compiles a short declarative spec into one static, byte-compiled init file. At shell start nothing is resolved, searched, forked or parsed by the manager: your .zshrc sources a tiny bootstrap and that one file. Everything in the spec, plugins, tool init zsh output and your own rc files, is split into two stages, before and after the first prompt, so the prompt appears as early as possible. compinit itself runs after the prompt.
zgem
zgem is a plugin manager for ZSH that supports loading and updating plugins and themes from git, http and local files.
zgen
Zgen is currently not being actively maintained. I recommend you use the zgenom fork instead, which is actively maintained and continues to get new features and bug fixes.
Zgen was a lightweight plugin manager for ZSH inspired by Antigen. The goal was to have minimal overhead when starting up the shell because nobody likes waiting.
zgenom
A lightweight plugin manager for ZSH that is a fork that extends the brilliant zgen and provides more features and bugfixes while being fully backwards compatible.
To keep loading fast during new terminal sessions, zgenom generates a static init.zsh file which does nothing but source your plugins and append them to your fpath.
This minimizes startup time by not having to execute time consuming logic (plugin checking, updates, etc) during every shell session's startup. The downside is that you have to refresh the init script manually with zgenom reset whenever you update your plugin list in your .zshrc.
Zgenom can load oh-my-zsh-compatible and prezto-compatible plugins and themes, and will automagically git clone plugins for you when you add them to your plugin list.
zi
Zi is the Z-Shell ecosystem's plugin manager. It can source a single remote script, manage a complete plugin, install a binary release, run build steps, or defer work until after the first prompt. Zi was formerly known as zplugin and zinit.
zilsh
zilsh is a ZSH config system that aims to appeal more to power-users and follow the simplistic approach of vim-pathogen.
zim
Zim is a ZSH configuration framework with blazing speed and modular extensions.
Zinit
Zinit is an innovative and probably (because of the Turbo) the fastest plugin manager with support for:
- Turbo mode – 80% faster ZSH startup! for example: instead of 200 ms, it'll be 40 ms
- Completion management (selectively disable and enable completions)
- Snippets (↔ regular files downloaded via-URL, e.g.: scripts) and through them Oh My Zsh and Prezto plugins support (→ low overhead)
- Annexes (↔ Zinit extensions)
- Reports (from the plugin loads – plugins are no longer black boxes)
- Plugin unloading (allows e.g.: dynamic theme switching)
bindkeycapturing and remapping- packages
- Clean
fpath(the array$fpathis not being used to add completions and autoload functions, hence it stays concise, not bloated) - Services ↔ a single-instance, background plugins
- Also, in general: all the mechanisms from the ZSH Plugin Standard – Zinit is a reference implementation of the standard.
The project is very active – currently > 3100 commits.
zinit-4
This is Zinit 4 from the original author, who once removed the Zinit repository from GitHub. This spawned a community-driven zdharma-continuum organization that revived all of psprint's ZSH projects. Its main innovations from the @zdharma-continuum fork are:
- AppImage distribution (release link),
- Action complete – press
Alt-Shift-AandAlt-Shift-Cto complete plugin names and ice modifiers, - Themes – set
$ZITHEME to one of default, blue and gold to set a color set to use for Zinit 4 messages, - New ice
buildwhich is equivalent of three other ices:null,configureandmake installand simply builds the project from sources, with support for autotools/CMake/Meson/Scons.
These are the most visible changes, but there are more (like e.g.: support for compiling with libraries from previously built projects/$ZPFX).
zit
zit is a plugin manager for ZSH. It is minimal because it implements the bare minimum to be qualified as a plugin manager: it allows the user to install plugins from git repositories (and git repositories only, that's why the name), source plugins and update them. It does not implement fancy functions like cleanup of removed plugins, automatic compilation of installed plugins, alias for oh-my-zsh/prezto/other ZSH frameworks, building binaries, $PATH manipulation and others.
zload
zload is an ultra-fast, zero-friction, memory-mapped ZSH plugin manager and loader built with 100% pure ZSH.
It delivers ~0.6 ms warm interactive startup overhead (10 plugins, Apple Silicon; measured by zsh benchmark/bench.zsh) by compiling plugins into a consolidated .zwc wordcode bundle, automatically resolving canonical execution order, and completely eliminating subprocess forks.
zlugin
zlugin is a very lightweight ZSH plugin manager.
znap
:zap:Znap is a light-weight plugin manager & git repository manager for ZSH that's easy to grok. While tailored for ZSH plugins specifically, Znap also functions as a general-purpose utility for managing git repositories.
Znap can:
- Make any prompt appear instantly. Reduce your startup time from ~200ms to ~40ms with just one command.
- Asynchronously compile your plugins and functions.
- Cache those expensive
eval $(commands). - Clone or pull multiple repos in parallel.
- Re-clone all your repos without you having to re-enter them.
- Multi-repo management
- Automatic
compinitandbashinit- you no longer need them in your.zshrc, znap will do them automatically as needed.
zoppo
Zoppo is the crippled configuration framework for ZSH. As an Italian saying goes: "chi va con lo zoppo, impara a zoppicare", we realized we were walking with a cripple and are now going to become crippled ourselves.
zpacker
Zpacker is a lightweight ZSH plugin & theme management framework.
zpico
zpico is a minuscule ZSH package manager. No frills, no bloat, just 2 kB of 100% ZSH code, providing complete package management for your ZSH environment.
ZSH package managers are abundant, but most are bloated, slow or have excessive requirements. On top of that, more than a few have been abandoned for years. Zpico does not seek to be the best of the best, rather to balance functionality against a tiny, fast footprint.
zplug
:hibiscus: Zplug is a next-generation ZSH plugin manager.
- Can manage everything
- ZSH plugins/UNIX commands on GitHub and Bitbucket
- Gist files (gist.github.com)
- Externally managed plugins e.g., oh-my-zsh and prezto plugins/themes
- Binary artifacts on GitHub Releases
- Local plugins
- etc. (you can add your own sources!)
- Super-fast parallel installation/update
- Support for lazy-loading
- Branch/tag/commit support
- Post-update, post-load hooks
- Dependencies between packages
- Unlike antigen, no ZSH plugin files (
*.plugin.zsh) are required - Interactive interface (fzf, peco, zaw, and so on)
- Cache mechanism for reducing the startup time
zpm
zpm (ZSH Plugin Manager) is a plugin manager for ZSH which combines the imperative and declarative approach. At first run, zpm will do complex logic and generate a cache, after that will only use the cache, so it makes this framework very fast.
- Fastest plugin manager (Really, after the first run,
zpmwill not be used at all) - Support for async loading
- Dependencies between packages
- zpm runs on Linux, macOS, FreeBSD and Android.
- zpm plugins are compatible with oh-my-zsh.
zr
zr is a quick, simple ZSH plugin manager written in Rust and easily installable with cargo install zr.
zshing
zshing is a ZSH plugin manager similar to Vundle/Vim and allows you to...
- Keep track of and configure your plugins right in your
~/.zshrc - Install ZSH plugins
- Update ZSH plugins
- Search by name all available ZSH Plugins
- Clean unused plugins up
- Run the above actions in a single command
- Manages the Source Plugins of your installed Plugins
zsh-dot-plugin
zsh-dot-plugin will customize your .zshrc with only ~21 lines of code. Based on zsh-unplugged.
zsh-mgr
A simple plugin manager for zsh. Features:
- Auto-updates all plugins.
- Auto-updates itself.
- Configurable time interval for both auto-updaters.
zsh-unplugged.
zsh-unplugged is a tiny plugin manager. TLDR; You don't need a big bloated plugin manager for your ZSH plugins. A simple ~20 line function may be all you need.
zshPlug
zshPlug is a minimalist plugin manager heavily based on zap.
ztanesh
Ztanesh aims to improve your UNIX command line experience and productivity with the the configuration provided by the ztanesh project: the tools will make your shell more powerful and easier to use.
ztheme
ztheme is a small and fast theme engine for ZSH.
ztupide
ztupide is a simple and fast ZSH plugin manager. It uses zcompile and async loading to speed up your shell startup time.
zulu
Zulu is a environment manager for ZSH 5 or later, which aims to make it easy to manage your shell without writing any code.
- Easily manage your shell environment without editing files.
- Create aliases, functions and environment variables, and have them available to you at the next shell startup.
- Add and remove directories from
$path,$fpathand$cdpathwith simple commands. - Install packages, plugins and themes easily, and have them available to you immediately.
zush 🦥 - Mid-Performance ZSH Configuration
zush is a performance-aware ZSH configuration designed for sub-200ms startup times while maintaining full functionality.
Features:
- Instant Prompts - Basic prompt appears immediately, full prompt loads after ~129ms
- Plugin Management - Simple
zushp user/repocommand to install GitHub plugins - Lazy Loading - Tools like
nvm,pyenv,cargoload only when needed - Auto-compilation - All ZSH files compiled with
zcompilefor faster loading - Smart Caching - Environment changes cached for instant startup
Performance
You can find performance timing comparisons for various frameworks in the following locations.
- rossmacarthur/zsh-plugin-manager-benchmark - Contains performance benchmarks for the most popular ZSH frameworks, including both install time and load time.
- pm-perf-test - Tooling for running performance tests on multiple ZSH frameworks.
Setups
This section is for full setup dropins - they aren't frameworks, but they're not simple plugins/themes either.
oh-my-zsh
- awesome-lazy-zsh - automates your ZSH setup with 46 plugins, 5 themes, configuration profiles, and service installation. It installs dependencies, manages Oh My Zsh, and gives you a beautiful interactive CLI to build the terminal environment you want.
- master-oogway - A complete ZSH environment — dragon prompt theme,
gitaliases, fuzzy-finder functions, and 25 opt-in plugins — distributed as a standalonegitrepo.
Raw ZSH
- KronuZSH - An opinionated, complete ZSH configuration—not a plugin intended to be sourced into an existing framework. It installs the standard ZSH runcoms and owns the shell options, history, completion, keybindings, plugins, and prompt they load.
zgenom
- zsh-quickstart-kit - A simple quickstart for using ZSH with zgenom. This automatically configures ZSH to use zgenom to load a curated (but easily customizable) collection of plugins and periodically automatically update itself, the plugins, and the quickstart kit itself.
zinit
-
ZPWR - An extremely powerful custom terminal environment built on top of Zinit for maximum speed. A full terminal configuration framework including
zsh,tmux,fzf,vimand spacemacs configurations. It includes: -
12.9k+ tab completions
-
1.9k+ aliases
-
330+ git aliases
-
400+ zpwr subcommands
-
2.8k functions
-
175+ zpwr environment variables
-
175+ perl, python, bash, ZSH scripts
-
2.8k line README.md
-
50k+ LOC
-
1 line install
Prerequisites
If you're on a Mac, the zsh that comes with each OS update is usually very stale. You can use brew install zsh to update it.
Many of the themes here use special glyphs for things like displaying a branch icon. You'll need to use a Nerd Font or a Powerline-compatible font in your terminal program or you'll see ugly broken boxes where the symbols should be.
Here are a few good sources for Nerd Fonts and Powerline-compatible fonts:
- Awesome Terminal Fonts - A family of fonts that include some nice monospaced Icons.
- Cascadia Code - Microsoft's Cascadia Code
- Commit Mono - Neutral programming typeface.
- Fantasque Awesome Font - A nice monospaced font, patched with Font-Awesome, Octoicons, and Powerline-Glyphs.
- Fira Mono - Mozilla's Fira type family.
- Hack - Another Powerline-compatible font designed for source code and terminal usage.
- Input Mono - A family of fonts designed specifically for code. It offers both monospaced and proportional fonts and includes Powerline glyphs.
- Iosevka - Iosevka is an open source slender monospace sans-serif and slab-serif typeface inspired by Pragmata Pro, M+ and PF DIN Mono, designed to be the ideal font for programming.
- Monaspace - Monaspace is five interchangable type families, each of which is packaged into three distinct formats. You can install all of them side-by-side; their family names are distinct by family and format.
- Monoid - Monoid is customizable and optimized for coding with bitmap-like sharpness at 15px line-height even on low res displays.
- Mononoki - Mononoki is a typeface by Matthias Tellen, created to enhance code formatting.
- More Nerd Fonts - Another site collecting Nerd Fonts to download.
- Nerd fonts - A collection of over 20 patched fonts (over 1,700 variations) & the fontforge font patcher python script for Powerline, devicons, and vim-devicons: includes Droid Sans, Meslo, AnonymousPro, ProFont, Inconsolta, and many more. These can be installed with
brew- dobrew tap homebrew/cask-fonts && brew install --cask fontname - Powerline patched font collection - A collection of a dozen or so fonts patched to include Powerline glyphs.
- Spacemono - Google's new original monospace display typeface family.
- Victor Mono - Victor Mono is a free programming font with semi-connected cursive italics, symbol ligatures (!=, ->>, =>, ===, <=, >=, ++) and Latin, Cyrillic and Greek characters.
If you're looking for a new font to use, check out www.codingfont.com - it presents programming fonts in a bracket-style tournament and lets you keep picking the best of two presented options until landing on a final font that you like the most.
Tutorials
Generic ZSH
- A Beautifully Productive Terminal Experience - Tutorial using a combination of iTerm 2, ZSH, Prezto, Tmux, and Tmuxinator to make for an extremely productive developer workflow.
- A Guide to ZSH Completion With Examples - Explains ZSH autocompletion configuration with examples.
- adamnorwood-zsh - A minimalist but readable ZSH setup based on oh-my-posh.
- Arch Linux's ZSH introduction - Not actually Arch or Linux-specific.
- commandlinepoweruser.com - Wes Bos' videos introducing ZSH and oh-my-zsh.
- GH - Setup ZSH on debian/Ubuntu-based linuxes. Installs Powerlevel10k, zsh-completions, zsh-autosuggestions, fast-syntax-highlighting, and more.
- How To Make an Awesome Custom Shell with ZSH - A beginner-friendly tutorial on how to install and configure a ZSH shell.
- Profiling ZSH - Good article about profiling your ZSH setup to optimize startup time.
- rs-example - An example plugin showing how a Rust program can listen to and process commands from ZSH.
- Why ZSH is Cooler than your Shell - slideshare presentation.
- zephyr - Zephyr uses built-in Zsh features to set up better default options, completions, keybindings, history, and much more.
- ZSH for Humans - A turnkey configuration for ZSH that aims to work really well out of the box. It combines a curated set of ZSH plugins into a coherent whole that feels like a finished product rather than a DIY starter kit.
- ZSH Pony - Covers customizing ZSH without a framework.
- ZSH Setup by Easy-Cloud-in - A powerful Zsh environment setup with Oh My Posh themes, essential plugins, and advanced search capabilities. This repository provides scripts to automatically configure your terminal with modern features and aesthetics. Requires a Debian or Ubuntu based system.
- ZSH tips by Christian Schneider - An exhaustive list of ZSH tips by Christian Schneider.
- ZSH Unplugged - Good resource if you want to eliminate using a framework but still easily use plugins.
Antigen
- belak/zsh-utils - A minimal set of ZSH plugins designed to be low-friction and low-complexity.
- mgdm.net/weblog/zsh-antigen/ - Michael Maclean's article about switching from oh-my-zsh to antigen.
- Oh-my-zsh is the Disease and Antigen is the Vaccine - Josh Davis' introduction to Antigen.
Oh-My-Zsh
- Configuration to use Hyper.js as a ZSH terminal with a Windows Subsystem Linux on windows 10, with Oh My Zsh and the Powerlevel10k theme - How-to for getting Oh-My-ZSH running on WSL.
- Getting started with oh-my-zsh - A beginners guide to oh-my-zsh by Dien Bui
- How to Install and Configure Z Shell in Ubuntu - Amar Pan's article will walk you through the process of installing and configuring ZSH, including how to change themes and enable the time-saving autosuggestions plug-in.
- iTerm2 + Oh-My-ZSH: Supercharge Your Mac Terminal - Catalin Pit's tutorial on getting started with Oh-My-ZSH on macOS.
- Learn Zsh in 80 Minutes macOS - A beginners guide to using Oh My Zsh on macOS by Karl Hadwen
- Oh-My-Zsh! A Work of CLI Magic - Michiel Mulders installation guide for Ubuntu
- One Key Linux Setup - Simple setup (ubuntu-only) of
zsh,oh-my-zsh,tmux,pythonsupport and other packages. - Speeding Up My ZSH Shell - A quick guide to speeding up ZSH with OMZ
Prezto
- A Beautifully Productive Terminal Experience - Mike Buss' blog post about using Prezto, Tmux & Tmuxinator.
- Migrate from Oh-My-Zsh to Prezto - Jerome Dalbert's blog post on migrating to Prezto.
Zgen
- rad-shell - A fantastically feature rich, lightning-fast shell setup, powered by ZSH, Prezto, and Zgen.
Zinit (né zplugin)
- BlaCk-Void-Zsh - :crystal_ball: Awesome, customizable Zsh Starter Kit :stars::stars:. Includes powerline, fzf integration, Weather and image viewing in some terminals.
- zinit-configs - Real-world configuration files (basically a collection of
.zshrcfiles) holding zinit invocations.
ZSH on Windows
superconsole - Windows-only
ConEmu/zshout-of-the-box configured to restore previously opened tabs and shell working directories afterConEmurestart- Choose between clean and inherited environment when starting new SuperConsole sessions
- Custom colorful scheme, colorful output for various commands
MSYS2included,zshand necessary software preinstalled, uses zsh-grml-config- Uses Antigen for ZSH theme and config management
- Enabled number of ZSH plugins to activate completion, highlighting and history for most comfortable use
- Git-for-Windows repo with proper
gitandgit lfssupport forMSYS2environment is configured,gitclient already installed. ssh-agentforgitworks out-of-box, add your keys toConEmu/msys64/ConEmu/msys64/home/user/.sshdir- Non-blocking ZSH prompt status updates thanks to agkozak-zsh-prompt
- Command-not-found handler customized for
MSYS2suggests what package to install - Sets up
nanoas main editor, enablesnanosyntax highlighting - Custom helper scripts added to
ConEmu/msys64/3rdparty
Plugins
- 1password - Adds 1Password functionality including a
opswdcommand that wraps theopcommand. It takes a service name as an argument and copies the password for that service to the clipboard. - 256color - Enhances the terminal environment with 256 colors. It looks at the chosen
TERMenvironment variable and sees if there is respective ncurses' terminfo with 256 colors available. The result is a multicolor terminal, if available. - abbr-path - Adds functionality of the
theme_title_use_abbreviated_pathparameter from some oh-my-fish themes. - abbr-preview - Previews abbr abbreviations as you type.
- abbr - Manages auto-expanding abbreviations that expand inline when you hit space, inspired by the fish shell.
- abbr - Lightweight abbreviation expansion for ZSH — inspired by fish, built for speed.
- abbrev-alias - Provides functionality similar to
vim's abbreviation expansion. - actiona - Make it easier to call actiona scripts from your command line. Includes tab completions.
- activate-py-environment - Automagically detects and activates your python environments (
poetry,virtualenvandconda) while traversing directories. - adguard-helper - Simplies interaction with the AdGuard VPN CLI. It provides user-friendly commands that reduce the need to remember complex flags and commands by offering a more intuitive interface.
- adonisjs - Plugin for skipping the
nodepart of theacecommand. - agent-history - ZSH shortcut to resume recent AI coding sessions in the terminal.
- ai-cli - Describe what you want in plain English and get a shell command back, ready to edit or run. Claude writes the command, or a model you run yourself through Ollama, LM Studio or any OpenAI-compatible server; nothing runs until you press Enter. Type a request and press Ctrl-O, or run
ai <request>. - ai-cmd - Natural language to shell commands with ghost text preview. Requires
curl,jqand an Anthropic API key. - ai-cmd - Generate shell commands from natural language using LLMs via Claude Code or Ollama.
- ai-commands - Asks GPT (gpt-4-turbo-preview) for CLI commands that achieve the described target action.
- airpods-battery - Looks for AirPods via Bluetooth and puts their battery charge state into
$RPROMPT. - aish - Instant shell script solutions from OpenAI right in your prompt.
- alacritty - Control alacritty color schemes.
- alehouse - Contains short aliases for brew commands, inspired by
betterbrew. - alias-finder - Displays an alias when you use a command you have aliased previously. Helpful for remembering aliases you have defined in the past. Written as a pure ZSH script for speed.
- alias-maker - Allows you to easily create and manage aliases from the command line.
- alias-tips - An oh-my-zsh plugin to help remembering those aliases you defined once.
- allclear - Clears the terminal when you
cdinto$HOME. - allergen - A collection of custom ZSH plugins to use with Antigen.
- almostontop - Clears previous command output every time before new command executed in shell. Inspired by the alwaysontop plugin for
bash. - alt-and-select - Binds the
alt-c(copy),alt-v (paste),alt-x(cut) keyboard shortcut to commands:copy-region-as-kill,yankandkill-region. Remaps the execute command toalt-shift-X. - ansible-fzf - A plugin that completes ansible-playbook tags and works with fzf-tab.
- ansible - A plugin for Ansible.
- ansimotd - Adds old-school cool ANSI art when a login shell starts.
- ansiweather - Weather in your terminal, with ANSI colors and Unicode symbols.
- antidote-use-omz - Make using oh-my-zsh with antidote seamless.
- antigen-git-rebase - Antigen/ZSH script to aid with
gitrebasing. - anyframe - A
peco/percol/fzfwrapper plugin for ZSH. - apache2 - Adds aliases and functions for managing Apache2.
- apparix - Command line directory bookmarks with jumping to bookmarks, subdirectory tab completion, distant listing etc.
- apple-touchbar - Adds MacBook Pro touchbar support in iTerm 2.
- appup - Adds
start,stop,upanddowncommands when it detects adocker-compose.ymlorVagrantfilein the current directory (e.g. your application). Just runupand get coding! - apt - For distros with
aptpackage manager. Offers to install missing programs for you. - arc-prompt - Arc VCS prompt integration with branch display, status caching, operation mode detection, agnoster theme support, and aliases.
- arc-search - Enables quick searches using Arc browser directly from your terminal. Features URL encoding for search terms.
- arc - Adds aliases for Yandex version control system.
- arch-aptstyle - Designed to provide Debian/Ubuntu-style
aptcommand wrappers for users transitioning from those distributions to arch. Requiresyayorparufor full functionality. - archlinux (fourdim) - Defines helper functions for
pacmanon Arch Linux. - archlinux (junker) - Based on the oh-my-zsh archlinux plugin. Defines helper functions and aliases.
- arduino - Adds scripts to build, upload and monitor arduino sketches from a command line. Requires
jq. - artisan - Laravel
artisanplugin for ZSH to help you to runartisanfrom anywhere in the project tree, with tab completion! - asciidoctor - A plugin for AsciiDoctor.
- asdf (kiurchv) - Integration and completions for asdf, the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more.
- asdf (zimfw) - Initializes asdf, installing it using
gitif not installed yet. Also, bypasses the shims if you're using the direnv plugin, as suggested by the plugin pro-tips. - asdf-direnv - Integration and completions for asdf and direnv.
- asdf-prompt - Provides a function usable in prompts that displays version information for your current tool versions.
- ask-opencode - Integrates OpenCode AI with your shell, allowing you to generate shell commands using natural language. Press
Ctrl+Oto transform any text in your command line into optimized shell commands. - ask - Serves as a ChatGPT API frontend, enabling you to interact with ChatGPT directly from the ZSH shell using only
cURLandjq. - assistant - Uses ollama to answer questions about commands.
- assume-role - Allows you to assume AWS IAM roles easily. Includes completions.
- async - Library for running asynchronous tasks in ZSH without requiring any external tools. Allows you to run multiple asynchronous jobs, enforce unique jobs (multiple instances of the same job will not run), flush all currently running jobs and create multiple workers (each with their own jobs).
- atom-plugin - Based on the Sublime plugin, lets you launch a file or folder in Atom from iTerm 2.
- atuin - Replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.
- aur-install - Small plugin to install packages from the AUR.
- auto-color-ls - Automatically list directories with
colorls. - auto-fu.zsh - Automatic complete-word and list-choices. Originally incr-0.2.zsh by y.fujii .
- auto-ls (commanda-panda) - Automatically runs
lsorcolor-lsif available oncd. - auto-ls (desyncr) - Automatically
lswhen cding to a new directory. - auto-notify - Automatically sends out a notification when a long running task has completed.
- auto-nvm - Automatically switches to the node version specified in a given directory.
- auto-pnpm-use - Automatically loads the node version specified in
.nvmrcor.npmrc. - auto-venv (skylor0tang) - Automatically activates the Python virtual environment in the current directory or its parent directories.
- autocomplete - Automatically lists completions as you type and provides intuitive keybindings for selecting and inserting them.
- autodark (cravend) - Switches between user-specified light and dark themes. Only works on macOS.
- autodark (vbwx) - Switches to another Terminal profile if dark mode is enabled (macOS-only).
- autodotenv - Will prompt you to load variables when you
cdinto a directory containing a.envfile. - autoenv-extended - Extended version of the zsh-autoenv plugin.
- autoenv - Directory-based environments.
- autofix - When a command fails, captures its
stderrand asks a local Ollama model for a fix, shown as ghost-text you can accept withTab. Silent on success. - autojump - A
cdcommand that learns - easily navigate directories from the command line. Install autojump-zsh for best results. - automated-actions - Provides aliases for the automated-actions CLI.
- autopair - A ZSH plugin for auto-closing, deleting and skipping over matching delimiters. Only tested on ZSH 5.0.2 or later.
- autoquoter - A
zlewidget ("zsh plugin") that will automatically put quotes around arguments to certain commands. - autosuggestions-plugin - 🐟 Fish-style auto-suggestions in ZSH.
- autosuggestions - Fish-like fast/unobtrusive autosuggestions for ZSH.
- autoswitch-virtualenv - ZSH plugin to automatically switch python virtualenvs and pipenvs when traversing directories. Automatically detects pipenv and poetry projects.
- autoupdate-antibody - A fork of autoupdate-antigen for the Antibody plugin manager, with the added ability to cooperate with static loading.
- autoupdate-antigen - Antigen doesn't do automatic updates like oh-my-zsh. This plugin adds auto updating for
antigen, both ofantigenand the bundles loaded in your configuration. - autoupdate-oh-my-zsh-plugins - oh-my-zsh doesn't automatically update non-core plugins, this plugin autoupdates
gitrepositories in the$ZSH_CUSTOMdirectory. - autovenv (linnnus) - Automatically activates Python virtual environments when entering their parent directory.
- autovenv (snovra-dev) - Automatically activates Python virtual environments when entering their parent directory.
- aws-cli-mfa - AWS CLI MFA plugin based on sweharris' aws-cli-mfa. Supports specifying
mfa_devicein profile. - aws-login - Provides an
aws-logincommand that starts an AWS session that only the current terminal and its child processes can use. - aws-mfa - Plugin for using AWS MFA.
- aws-plugin - Adds helper functions for
awscommand. Includes mfa andassume-rolehelpers. - aws-upload - Boost your productivity with
aws-upload. - aws-vault (blimmer) - Plugin for aws-vault. Includes tab completions.
- aws-vault (zsh-contrib) - aws-vault integration with per-window AWS profile support in
tmux. - aws-vault-profiles - Plugin that integrates usage of aws-vault with the
$AWS_PROFILEenvironment variable. - aws2 - Provides completion support for version 2 of the awscli and a few utilities to manage AWS profiles and display them in the prompt.
- awsmultiaccount - Manages AWS profiles and assuming roles in a multi-account organization. It provides helper functions to easily switch between AWS profiles and assume the OrganizationAccountAccessRole in different accounts. Requires the
awscli and jq - awsp - AWS profile management for ZSH. Inspired by oh-my-zsh's aws plugin. Shows details of currently active AWS profile.
- awsssh - List, select and
sshinto EC2 instances. - awsume - Plugin that enables showing the current awsume profile.
- azcli - Helper for using the Azure cli tools.
- azure-keyvault - Makes using Azure keyvaults less verbose from the cli.
- azure-subscription - Displays information about the Azure current Subscription and tenant.
- banner - Displays ANSI/ASCII art on session startup.
- baseballfunfacts - Print random baseball related "fun facts" in your shell. Depends on
fortuneandcowsaybeing installed. - bash-quote - Get random quote from Bash.im.
- bash - Makes ZSH more Bash compatible. It redefines the source command to act more like
bashdoes. It also enablesbashcompletions. - bat - Adds some helper aliases for bat users.
- battery_state - Show battery state in right-prompt.
- bd - Jump back to a specific directory, without doing
cd ../../... - bepoptimist Remaps vi-mode for the French bépo keyboard.
- better-chmod - Adds a
bchmodcommand (and an optionalchmodreplacement) that accepts symbolic and octal permission formats with input validation and colored output. - bitbucket-git-helpers - Adds helper scripts to allow you to create bitbucket PRs or open a directory in the current branch.
- bitwarden (casonadams) - A Bitwarden CLI fuzzy finder using fzf. Requires jq.
- bitwarden (game4move78) - Adds functions to manage bitwarden sessions.
- bitwarden (kalsowerus) - Opens a fzf widget containing your Bitwarden vault items. Upon selecting an item either the username or password will be either written into the shell or copied into the clipboard. Requires fzf,
jqandbitwarden. - blackbox - Stack Exchange's toolkit for storing keys/credentials securely in a
gitrepository. - bob - Plugin for bob a cross-platform and easy-to-use Neovim version manager.
- bofh - Adds functions to display random bofh fortunes.
- bol - Prints a random quote when you open a terminal window.
- boot-kit - Adds instrumentation to your ZSH environment.
- boss-docker - Manages
dockeron macOS. - boss-git - Adds some convenience aliases for
git. - branch-manager - A plugin for managing
gitbranches. - brave - Manages Brave profiles. With this plugin, you can start the Brave Browser with a specific us