---
visibility: public
---

# ZSH Plugins

**repo:** [unixorn/awesome-zsh-plugins](https://github.com/unixorn/awesome-zsh-plugins)  
**category:** [[development-environment|Development Environment]]
**related:** [[shell|Shell]]

---

# awesome-zsh-plugins

[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)

## Status

[](https://opensource.org/license/BSD-3-Clause)
![Awesomebot](https://github.com/unixorn/awesome-zsh-plugins/actions/workflows/awesomebot.yml/badge.svg)
[](https://github.com/unixorn/awesome-zsh-plugins/stargazers)

[](https://github.com/unixorn/awesome-zsh-plugins)
[![Track Awesome List](https://www.trackawesomelist.com/badge.svg)](https://www.trackawesomelist.com/unixorn/awesome-zsh-plugins/)

A collection of ZSH frameworks, plugins, tutorials & themes inspired by the various awesome list collections out there.

## Table of Contents

- [Disclaimer](#disclaimer)
- [Frameworks](#frameworks)
  - [alf](#alf)
  - [ansible-role-zsh](#[ansible](/@harrisonqian/awesome/wiki/miscellaneous/ansible)-role-zsh)
  - [ant-zsh](#ant-zsh)
  - [antibody](#antibody)
  - [antidote](#antidote)
  - [antigen-hs](#antigen-hs)
  - [antigen](#antigen)
  - [awesome-lazy-zsh](#[awesome](/@harrisonqian/awesome/wiki/miscellaneous/awesome)-lazy-zsh)
  - [ax-zsh](#ax-zsh)
  - [deer](#deer)
  - [dotzsh](#dotzsh)
  - [fresh](#fresh)
  - [gh-source](#gh-source)
  - [miniplug](#miniplug)
  - [oh-my-zsh](#oh-my-zsh)
  - [PMS](#pms)
  - [prezto](#prezto)
  - [pumice](#pumice)
  - [rac](#rac)
  - [rat](#rat)
  - [ryzshrc](#ryzshrc)
  - [sheldon](#sheldon)
  - [shellx](#shellx)
  - [shplug](#shplug)
  - [TheFly](#thefly)
  - [Toasty](#toasty)
  - [Usepkg](#usepkg)
  - [uz](#uz)
  - [x-cmd](#x-cmd)
  - [xc-manager](#xc-manager)
  - [yazt](#yazt)
  - [yzsh](#yzsh)
  - [zap](#zap)
  - [zapack](#zapack)
  - [zcomet](#zcomet)
  - [zeesh](#zeesh)
  - [zgem](#zgem)
  - [zgen](#zgen)
  - [zgenom](#zgenom)
  - [zilsh](#zilsh)
  - [zim](#zim)
  - [Zinit](#zinit)
  - [zinit-4](#zinit-4)
  - [zit](#zit)
  - [zlugin](#zlugin)
  - [znap](#znap)
  - [zoppo](#zoppo)
  - [zpacker](#zpacker)
  - [zpico](#zpico)
  - [zplug](#zplug)
  - [zpm](#zpm)
  - [zr](#zr)
  - [zshing](#zshing)
  - [zsh-dot-plugin](#zsh-dot-plugin)
  - [zsh-mgr](#zsh-mgr)
  - [zsh-unplugged.](#zsh-unplugged)
  - [zshPlug](#zshplug)
  - [ztanesh](#ztanesh)
  - [ztheme](#ztheme)
  - [ztupide](#ztupide)
  - [zulu](#zulu)
  - [zush 🦥 - Mid-Performance ZSH Configuration](#zush----mid-performance-zsh-configuration)
- [Setups](#setups)
  - [zgenom](#zgenom-1)
  - [zinit](#zinit-1)
- [Prerequisites](#prerequisites)
- [Tutorials](#tutorials)
  - [Generic ZSH](#generic-zsh)
  - [Antigen](#antigen-1)
  - [Oh-My-Zsh](#oh-my-zsh-1)
  - [Prezto](#prezto-1)
  - [Zgen](#zgen-1)
  - [Zinit (né zplugin)](#zinit-n%C3%A9-zplugin)
  - [ZSH on Windows](#zsh-on-windows)
    - [superconsole - [Windows](/@harrisonqian/awesome/wiki/platforms/windows)-only](#superconsole---windows-only)
- [Plugins](#plugins)
- [Completions](#completions)
- [Themes](#themes)
- [Fonts](#fonts)
- [Installation](#installation)
  - [Antigen](#antigen-2)
  - [dotzsh](#dotzsh-1)
  - [Oh-My-Zsh](#oh-my-zsh-2)
  - [Prezto](#prezto-2)
  - [Zgen](#zgen-2)
  - [Zgenom](#zgenom-2)
  - [zplug](#zplug-1)
  - [zpm](#zpm-1)
- [Writing New Plugins and Themes](#writing-new-plugins-and-themes)
- [Other Resources](#other-resources)
  - [ZSH Tools](#zsh-tools)
  - [Other Useful Lists](#other-useful-lists)
  - [Other References](#other-references)
- [Thanks](#thanks)

*Please read the [Contributing Guidelines](Contributing.md) 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.

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.

You can find performance timing comparisons of various frameworks in the following locations.

- [rossmacarthur/zsh-plugin-manager-benchmark](https://github.com/rossmacarthur/zsh-plugin-manager-benchmark) - Contains performance benchmarks for the most popular ZSH [frameworks](/@harrisonqian/awesome/wiki/front-end-development/frameworks), including both install time and load time.
- [pm-perf-test](https://github.com/z-shell/pm-perf-test) - Tooling for running performance tests on multiple ZSH [frameworks](/@harrisonqian/awesome/wiki/front-end-development/frameworks).

### [alf](https://github.com/psyrendust/alf)
 

**Alf** is an out of this world super fast and configurable framework for ZSH; it's modeled after [Prezto](https://github.com/sorin-ionescu/prezto) and [Antigen](https://github.com/zsh-users/antigen) while utilizing [Oh-My-Zsh](https://ohmyz.sh) under the covers; and offers standard defaults, aliases, functions, auto completion, automated updates and installable prompt themes and plugins.

### [ansible-role-zsh](https://github.com/viasite-ansible/ansible-role-zsh)
 

**ansible-role-zsh** is an ansible role with zero-knowledge installation. It uses [antigen](https://github.com/zsh-users/antigen) to manage bundles and [oh-my-zsh](ohmyz.sh). Can load bundles conditionally. By default it includes the powerlevel9k theme, autosuggestions, syntax-highlighting and [fzf-widgets](https://github.com/ytet5uy4/fzf-widgets) and [fzf-marks](https://github.com/urbainvaes/fzf-marks). Fully customizable.

### [ant-zsh](https://github.com/anthraxx/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](https://github.com/getantibody/antibody)

 

**Antibody** is a faster and simpler [antigen](https://github.com/zsh-users/antigen) written in Golang. More details are available at [http://getantibody.github.io/](http://getantibody.github.io/).

### [antidote](https://getantidote.github.io/)

 

**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](https://github.com/getantibody/antibody) left off.

[use-omz](https://github.com/getantidote/use-omz) enables easy use of [Oh-My-ZSH](https://github.com/ohmyzsh/ohmyzsh) with antidote.

### [antigen-hs](https://github.com/Tarrasch/antigen-hs)

 

**antigen-hs** is a replacement for [antigen](https://github.com/zsh-users/antigen) optimized for a low overhead when starting up a `zsh` session. It will automatically clone plugins for you.

### [antigen](https://github.com/zsh-users/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](https://github.com/AmJaradat01/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](/@harrisonqian/awesome/wiki/platforms/node-js), and Homebrew.

### [ax-zsh](https://github.com/alexbarton/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](https://github.com/romkatv/powerlevel10k) and other extensions, including plugins compatible with [oh-my-zsh](https://ohmyz.sh/).

### [deer](https://github.com/ArtixLabs/deer)

 

A minimalist ZSH plugin manager.

### [dotzsh](https://github.com/dotphiles/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](https://github.com/freshshell/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](https://bundler.io) for your dot files.

### [gh-source](https://github.com/Yarden-zamir/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.

### [miniplug](https://sr.ht/~yerinalexey/miniplug)
 

**miniplug** is a minimalistic plugin manager for ZSH.

- No crashes or double plugin loading when re-sourcing `.zshrc`
- Unlike other [frameworks](/@harrisonqian/awesome/wiki/front-end-development/frameworks), Miniplug does not pollute your `$PATH`
- Only does the bare minimum for managing plugins

### [oh-my-zsh](https://ohmyz.sh/)
 

**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.

### [PMS](https://github.com/JoshuaEstes/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](https://github.com/sorin-ionescu/prezto)

 

**Prezto** enriches the ZSH command line interface environment with sane defaults, aliases, functions, auto completion, and prompt themes. There are some [prezto](https://github.com/sorin-ionescu/prezto)-specific plugins at [https://github.com/belak/prezto-contrib](https://github.com/belak/prezto-contrib).

### [pumice](https://github.com/ryutamaki/pumice)

 

**Pumice** is a lightweight plugin manager for ZSH.

### [rac](https://github.com/lomarco/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](https://github.com/gotokazuki/rat-zsh)

  

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](/@harrisonqian/awesome/wiki/development-environment/github) [integration](/@harrisonqian/awesome/wiki/platforms/integration)
  - Fetches plugins from [GitHub](/@harrisonqian/awesome/wiki/development-environment/github) repositories
  - Supports branches, tags, and commits
  - Handles Git submodules automatically
- ⚡️ Lightweight and fast
  - Parallel plugin sync
  - Built in [Rust](/@harrisonqian/awesome/wiki/programming-languages/rust) 🦀
- 🔄 Seamless updates
  - Self-upgrade
  -Plugin sync

### [ryzshrc](https://github.com/ryzshrc/ryzshrc)

  

**ryzshrc** is a smart, innovative plugin manager like [Oh My Zsh](https://ohmyz.sh/), 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](https://github.com/rossmacarthur/sheldon)

  

**sheldon** is a fast, configurable, shell plugin manager.

- It can manage:
  - Any `git` repository.
    - Branch/tag/commit support.
    - Extra support for [GitHub](/@harrisonqian/awesome/wiki/development-environment/github) repositories.
    - Extra support for Gists.
  - Arbitrary remote files, simply specify the URL.
  - Local plugins, simply specify the directory path.
- Highly configurable install methods using [handlebars](http://handlebarsjs.com/) templating.
- Super-fast parallel installation.
- Configuration file using [TOML](https://github.com/toml-lang/toml) syntax.
- Uses a lock file for much faster loading of plugins.

### [shellx](https://github.com/0ghny/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](/@harrisonqian/awesome/wiki/development-environment/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 `~/bin` folder between others that is auto-included in `PATH`, 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](https://github.com/dtrugman/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](https://github.com/joknarf/thefly)
 

**TheFly** is a `bash`/`zsh`/`ksh` plugin manager and env teleporter

Makes your shell env and plugins available everywhere (hosts/users)!

### [Toasty](https://github.com/CosmicToast/toasty-zsh)
 

**Toasty** is a ZSH framework made to facilitate management, not dictate it.

### [Usepkg](https://github.com/gynamics/zsh-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](https://github.com/maxrodrigo/uz)

 

**uz** is a micro plugin manager for ZSH

### [x-cmd](https://github.com/x-cmd/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: https://x-cmd.com/

Tools Provided by x-cmd:
  - [Wrappers for Common Commands (e.g., cd, ip, ps, tar, apt, brew)](https://x-cmd.com/mod/zuz): These wrapped commands are more intelligent and easier to use compared to the native commands.
  - [Lightweight Package Management Tool](https://x-cmd.com/pkg/): We have implemented a lightweight package management tool using [shell](/@harrisonqian/awesome/wiki/development-environment/shell) and awk. Through it, you can quickly obtain most common software tools, such as jq, 7za, bat, nvim, [python](/@harrisonqian/awesome/wiki/programming-languages/python), node, go, etc.
  - [CLI for Useful Websites (e.g., [github](/@harrisonqian/awesome/wiki/development-environment/github).com, cht.sh)](https://x-cmd.com/mod/cht): We have wrapped their APIs using [shell](/@harrisonqian/awesome/wiki/development-environment/shell) and awk for daily use and to obtain corresponding services in scripts.
  - [AI Tools](https://x-cmd.com/mod/openai): We provide CLIs for [ChatGPT](/@harrisonqian/awesome/wiki/miscellaneous/chatgpt), Gemini, Jina.ai, etc., and have wrapped corresponding shortcut commands for different application scenarios, such as `@gemini` for chatting with Gemini AI and `@zh` for using AI to translate specified content or command results.

### [xc-manager](https://github.com/Rakosn1cek/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 `fzf` interface.
  - **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](https://github.com/bashelled/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](https://github.com/yunielrc/yzsh)

 

**yzsh** is a simple ZSH framework for managing plugins, themes, functions, aliases and environment variables.

### [zap](https://github.com/zap-zsh/zap)

 

**:zap:zap** is a minimal ZSH plugin manager.

### [zapack](https://github.com/aiya000/zsh-zapack)

 

**zapack** is a basic fast minimal ZSH plugin loader.

### [zcomet](https://github.com/agkozak/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.

### [zeesh](https://github.com/zeekay/zeesh)

 

**Zeesh** is a cross-platform ZSH framework. It's similar to, but incompatible with, [oh-my-zsh](http://ohmyz.sh/). 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.

### [zgem](https://github.com/qoomon/zgem)

 

**zgem** is a plugin manager for ZSH that supports loading and updating plugins and themes from `git`, http and local files.

### [zgen](https://github.com/tarjoilija/zgen)

 

**Zgen is currently not being actively maintained**. I recommend you use the [zgenom](https://github.com/jandamm/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](https://github.com/zsh-users/antigen). The goal was to have minimal overhead when starting up the shell because nobody likes waiting.

### [zgenom](https://github.com/jandamm/zgenom)

 

A lightweight plugin manager for ZSH that is a fork that extends the brilliant [zgen](https://github.com/tarjoilija/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](http://ohmyz.sh/)-compatible and [prezto](https://github.com/sorin-ionescu/prezto)-compatible plugins and themes, and will automagically `git clone` plugins for you when you add them to your plugin list.

### [zilsh](https://github.com/zilsh/zilsh)

 

**zilsh** is a ZSH config system that aims to appeal more to power-users and follow the simplistic approach of vim-pathogen.

### [zim](https://github.com/zimfw/zimfw)

 

**Zim** is a ZSH configuration framework with blazing speed and modular extensions.

### [Zinit](https://github.com/zdharma-continuum/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)
- `bindkey` capturing and remapping
- packages
- Clean `fpath` (the array `$fpath` is 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](https://github.com/psprint/Zinit-4)

 

This is Zinit 4 from the [original author](https://github.com/psprint), who once removed the [Zinit](https://github.com/zdharma-continuum/zinit) repository from GitHub. This spawned a community-driven [zdharma-continuum](https://github.com/zdharma-continuum) organization that revived all of psprint's ZSH projects. Its main innovations from the @zdharma-continuum fork are:

- [AppImage](/@harrisonqian/awesome/wiki/platforms/appimage) distribution (release link),
- Action complete – press `Alt-Shift-A` and `Alt-Shift-C` to complete plugin names and ice modifiers,
- Themes – set `$ZITHEM`E to one of default, blue and gold to set a color set to use for Zinit 4 messages,
- New ice `build` which is equivalent of three other ices: `null`, `configure` and `make install` and simply builds the project from sources, with support for autotools/[CMake](/@harrisonqian/awesome/wiki/programming-languages/cmake)/Meson/Scons.

---
*truncated — [full list on GitHub](https://github.com/unixorn/awesome-zsh-plugins)*
