Oh My Zsh is an open source, community-driven framework for managing your zsh configuration.
Sounds boring. Let's try again.
Oh My Zsh will not make you a 10x developer…but you may feel like one.
Once installed, your terminal shell will become the talk of the town or your money back! With each keystroke in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes. Strangers will come up to you in cafés and ask you, "that is amazing! are you some sort of genius?"
Finally, you'll begin to get the sort of attention that you have always felt you deserved. …or maybe you'll use the time that you're saving to start flossing more often. 😬
Getting Started
Prerequisites
- A Unix-like operating system: macOS, Linux, BSD. On Windows: WSL2 is preferred, but cygwin or msys also mostly work.
- Zsh should be installed (v4.3.9 or more recent is fine but we prefer 5.0.8 and newer). If not pre-installed (run
zsh --versionto confirm), check the following wiki instructions here: Installing ZSH curlorwgetshould be installedgitshould be installed (recommended v2.4.11 or higher)
Manual inspection
It's a good idea to inspect the install script from projects you don't yet know. You can see the install script at the following URL:
https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
Using Oh My Zsh
Plugins
Oh My Zsh comes with a shitload of plugins for you to take advantage of.
Click here to see all Plugins
- 1password
- adb
- ag
- aliases
- alias-finder
- ansible
- ant
- apache2-macports
- arcanist
- archlinux
- asdf
- autoenv
- autojump
- autopep8
- aws
- battery
- bazel
- bbedit
- bedtools
- bgnotify
- boot2docker
- bower
- branch
- brew
- bundler
- cabal
- cake
- cakephp3
- capistrano
- cask
- catimg
- celery
- chruby
- chucknorris
- cloudfoundry
- codeclimate
- coffee
- colemak
- colored-man-pages
- colorize
- command-not-found
- common-aliases
- compleat
- composer
- copybuffer
- copydir
- copyfile
- cp
- cpanm
- dash
- debian
- deno
- dircycle
- direnv
- dirhistory
- dirpersist
- dnf
- dnote
- docker
- docker-compose
- docker-machine
- doctl
- dotenv
- dotnet
- droplr
- drush
- eecms
- emacs
- ember-cli
- emoji
- emoji-clock
- emotty
- encode64
- extract
- fabric
- fancy-ctrl-z
- fasd
- fastfile
- fbterm
- fd
- fig
- firewalld
- flutter
- fnm
- forklift
- fossil
- frontend-search
- fzf
- gas
- gatsby
- gb
- gcloud
- geeknote
- gem
- genpass
- gh
- git
- git-auto-fetch
- git-escape-magic
- git-extras
- gitfast
- git-flow
- git-flow-avh
- github
- git-hubflow
- gitignore
- git-lfs
- git-prompt
- glassfish
- globalias
- gnu-utils
- golang
- gpg-agent
- gradle
- grails
- grc
- grunt
- gulp
- hanami
- helm
- heroku
- history
- history-substring-search
- hitchhiker
- hitokoto
- homestead
- httpie
- invoke
- ionic
- ipfs
- isodate
- istioctl
- iterm2
- jake-node
- jenv
- jfrog
- jhbuild
- jira
- jruby
- jsontools
- juju
- jump
- kate
- keychain
- kitchen
- kn
- knife
- knife_ssh
- kops
- kubectl
- kubectx
- kube-ps1
- lando
- laravel
- laravel4
- laravel5
- last-working-dir
- lein
- lighthouse
- lol
- lpass
- lxd
- macos
- macports
- magic-enter
- man
- marked2
- mercurial
- meteor
- microk8s
- minikube
- mix
- mix-fast
- mongocli
- mosh
- mvn
- mysql-macports
- n98-magerun
- nanoc
- ng
- nmap
- node
- nomad
- npm
- nvm
- oc
- octozen
- operator-sdk
- otp
- pass
- paver
- pep8
- percol
- per-directory-history
- perl
- perms
- phing
- pip
- pipenv
- pj
- please
- pm2
- pod
- poetry
- postgres
- pow
- powder
- powify
- profiles
- pyenv
- pylint
- python
- rails
- rake
- rake-fast
- rand-quote
- rbenv
- rbfu
- rbw
- react-native
- rebar
- redis-cli
- repo
- ripgrep
- ros
- rsync
- ruby
- rust
- rvm
- safe-paste
- salt
- samtools
- sbt
- scala
- scd
- screen
- scw
- sdk
- sfdx
- sfffe
- shell-proxy
- shrink-path
- singlechar
- spring
- sprunge
- ssh-agent
- stack
- sublime
- sublime-merge
- sudo
- supervisor
- suse
- svcat
- svn
- svn-fast-info
- swiftpm
- symfony
- symfony2
- systemadmin
- systemd
- taskwarrior
- terminitor
- term_tab
- terraform
- textastic
- textmate
- thefuck
- themes
- thor
- tig
- timer
- tmux
- tmux-cssh
- tmuxinator
- torrent
- transfer
- tugboat
- ubuntu
- ufw
- universalarchive
- urltools
- vagrant
- vagrant-prompt
- vault
- vim-interaction
- vi-mode
- virtualenv
- virtualenvwrapper
- volta
- vscode
- vundle
- wakeonlan
- wd
- web-search
- wp-cli
- xcode
- yarn
- yii
- yii2
- yum
- z
- zbell
- zeus
- zoxide
- zsh-interactive-cd
- zsh-navigation-tools
Deprecated Plugins:
- cargo: moved to the
rustplugin. - npx: new npm versions (>=7.0.0) do not provide the same functionality.
- osx: renamed to
macos. - rustup: moved to the
rustplugin.
Removed Plugins
- cloudapp: removed due to deprecated API.
- django: removed because Zsh provides a better completion for Django.
- fedora: use
dnfinstead. - git-remote-branch: not actively maintained.
- go: use
golanginstead. - nyan: the service that the plugin relied on is no longer available.
- zsh_reload: functionality baked into the CLI with
omz reload.
To see the plugins in the git repo, see https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins
Enabling Plugins
Go to the configurations tab, go to the Plugins configuration, and select the plugins you want to install.
Popular plugins include: git, macos, ruby etc
Using Plugins
Each plugin includes a README, documenting it. This README should show the aliases (if the plugin adds any) and extra goodies that are included in that particular plugin.
Themes
We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme happy. We have over one hundred and fifty themes now bundled.
Click here to see screenshots of all the themes
robbyrussell
The default that Robby Russell uses.

The rest of the themes, in alphabetical order:
A
af-magic

afowler

agnoster

Additional setup:
- Install one of the patched fonts from Vim-Powerline or patch your own for the special characters.
- Optionally set
DEFAULT_USERto your regular username followed by prompt_context(){} in~/.zshrcto hide the “user@hostname” info when you’re logged in as yourself on your local machine.
alanpeabody

amuse

(You might need to install one of the patched powerline fonts for it to look the same)
apple

arrow

aussiegeek

avit

awesomepanda

B
bira

blinks

bureau

To use: In the right prompt you see git status and (if you use nvm) the Node.js version.
C
candy

clean

cloud

crcandy

crunch

cypher

D
dallas

darkblood

daveverwer

dieter

dogenpunk

dpoggi

dst

dstufft

duellj

E
eastwood

edvardm

emotty

essembeh

evan

F
fino-time

fino

fishy

The fish shell prompt with git support
flazz

Has git and vi-command mode support (when enabled)
fletcherm

fox

frisk

frontcube

funky

It’s funky…
fwalch

G
gallifrey

gallois

garyblessington

gentoo

geoffgarside

gianu

gnzh

gozilla

H
half-life

humza

I
imajes

intheloop

itchy

J
jaischeema

jbergantine

jispwoso

jnrowe

jonathan

josh

jreese

jtriley

juanghurtado

junkfood

Totally ripped off Dallas theme
K
kafeitu

kardan

kennethreitz

kolo

kphoen

L
lambda

linuxonly

(As the name states, this only works on Linux)
lukerandall

M
macovsky

maran

mgutz

mh

michelebologna

mikeh

miloshadzic

minimal

mortalscumbag

Also tells you when logged in over ssh
mrtazz

murilasso

muse

N
nanotech

nebirhos

nicoulaj

norm

O
obraun

P
peepcode

philips

pmcgee

pygmalion

R
re5et

refined

rgm

risto

rixius

rkj-repos

S
sammy

simonoff

simple

skaro

smt

Soliah

sonicradish

sorin

sporty_256

steeef

strug

sunaku

Exit status if nonzero, status & branch if git, pwd always.
sunrise

Lightweight prompt with exit status and git status consistent mode line.
superjarin

Git status, git branch, and ruby, all in a no muss, no fuss prompt! Works with RVM, chruby, and rbenv (just activate the corresponding plugin).
suvash

Username, host, directory, git branch and rvm gemset
T
takashiyoshida

terminalparty

There is a party every day.
theunraveler

Minimal, informative when it needs to be.
tjkirch

Based on dst, plus a lightning bolt and return codes.
tonotdo

trapd00r

W
wedisagree

Instructions to further customize the theme are available as comments in the theme file.
wezm

wezm+

wuffers

X
xiong-chiamiov

xiong-chiamiov-plus

Y
ys

Clean, simple, compatible and meaningful.Tested on Linux, Unix and Windows under ANSI colors. It is recommended to use with a dark background.
Z
zhann

More themes
You can find more themes here.

Selecting a Theme
Once you find a theme that you'd like to use go to the configurations tab, go to the Theme configuration, and select the theme you'd like.
The default theme is robbyrussell. It's not the fanciest one. It's not the simplest one. It's just the right one (for him).
Randomly select a Theme
If you're feeling feisty, you can let the computer select one randomly for you each time you open a new terminal window.
- Set the Theme configuration to random
- [Optional] If you want random to only select from a list of your favorite themes, choose those themes in your Random Theme Candidates configuration variable
- [Optional] If you want random to ignore from a list of themes, choose those themes in your Ignored Random Theme Candidates configuration variable
Extra notes
- Several themes require installing the Powerline Fonts in order to render properly._
- In case you did not find a suitable theme for your needs, please have a look at the wiki for more of them.
FAQ
If you have some more questions or issues, you might find a solution in our FAQ.
Advanced Topics
If you're the type that likes to get their hands dirty, these sections might resonate.
Advanced Installation
Some users may want to manually install Oh My Zsh, or change the default path or other settings that the installer accepts (these settings are also documented at the top of the install script).
Custom Directory
The default location is ~/.oh-my-zsh (hidden in your home directory, you can access it with cd ~/.oh-my-zsh)
If you'd like to change the install directory with the ZSH environment variable, either by running
export ZSH=/your/path before installing, or by setting it before the end of the install pipeline
like this:
ZSH="$HOME/.dotfiles/oh-my-zsh" sh install.sh
Custom Plugins and Themes
If you want to override any of the default behaviors, just add a new file (ending in .zsh) in the custom/ directory.
If you have many functions that go well together, you can put them as a XYZ.plugin.zsh file in the custom/plugins/ directory and then enable this plugin.
If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the same name in the custom/plugins/ directory and it will be loaded instead of the one in plugins/.
Getting Updates
By default, you will be prompted to check for updates every 2 weeks. You can choose other update modes by adding a line to your ~/.zshrc file, before Oh My Zsh is loaded:
- Automatic update without confirmation prompt:
zstyle ':omz:update' mode auto
- Just offer a reminder every few days, if there are updates available:
zstyle ':omz:update' mode reminder
- To disable automatic updates entirely:
zstyle ':omz:update' mode disabled
NOTE: you can control how often Oh My Zsh checks for updates with the following setting:
# This will check for updates every 7 days
zstyle ':omz:update' frequency 7
# This will check for updates every time you open the terminal (not recommended)
zstyle ':omz:update' frequency 0
Manual Updates
If you'd like to update at any point in time (maybe someone just released a new plugin and you don't want to wait a week?) you just need to run:
omz update
Magic! 🎉
How do I contribute to Oh My Zsh?
Before you participate in our delightful community, please read the code of conduct.
I'm far from being a Zsh expert and suspect there are many ways to improve – if you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests!
We also need people to test out pull-requests. So take a look through the open issues and help where you can.
See Contributing for more details.
Do NOT send us themes
We have (more than) enough themes for the time being. Please add your theme to the external themes wiki page.
Contributors
Oh My Zsh has a vibrant community of happy users and delightful contributors. Without all the time and help from our contributors, it wouldn't be so awesome.
Thank you so much!
Follow Us
We're on social media:
- @ohmyzsh on Twitter. You should follow it.
- Facebook poke us.
- Instagram tag us in your post showing Oh My Zsh!
- Discord to chat with us!
Merchandise
We have stickers, shirts, and coffee mugs available for you to show off your love of Oh My Zsh. Again, you will become the talk of the town!
License
Oh My Zsh is released under the MIT license.
About Planet Argon

Oh My Zsh was started by the team at Planet Argon, a Ruby on Rails development agency. Check out our other open source projects.