Go to file
Felix bc8ffae08c Fix path trimming and line break 2018-10-15 19:58:49 +02:00
.github Add issue template (#260) 2016-12-12 22:46:11 +01:00
arch Close #108 PR: Refactor async logic and allow for async git status.. 2015-05-23 13:32:21 +02:00
.editorconfig tweaks 2014-09-05 14:55:06 +02:00
.gitattributes tweaks 2014-09-05 14:55:06 +02:00
async.zsh Update zsh-async to 1.7.0 (#429) 2018-08-20 16:53:38 +07:00
license tweaks 2014-09-05 14:55:06 +02:00
package.json 1.8.0 2018-08-20 11:28:23 +03:00
pure.plugin.zsh Symlink pure.plugin.zsh ---> pure.zsh 2014-06-22 22:46:06 +02:00
pure.zsh Fix path trimming and line break 2018-10-15 19:58:49 +02:00
readme.md Add Mímir to Ports section in the readme (#438) 2018-10-15 22:14:11 +07:00
screenshot-title-cmd.png add screenshot of directory+cmd in title 2013-09-06 17:14:42 +02:00
screenshot.png update screenshot 2016-07-25 12:21:05 +02:00



Pretty, minimal and fast ZSH prompt


Most prompts are cluttered, ugly and slow. I wanted something visually pleasing that stayed out of my way.


  • Comes with the perfect prompt character. Author went through the whole Unicode range to find it.
  • Shows git branch and whether it's dirty (with a *).
  • Indicates when you have unpushed/unpulled git commits with up/down arrows. (Check is done asynchronously!)
  • Prompt character turns red if the last command didn't exit with 0.
  • Command execution time will be displayed if it exceeds the set threshold.
  • Username and host only displayed when in an SSH session.
  • Shows the current path in the title and the current folder & command when a process is running.
  • Support VI-mode indication by reverse prompt symbol (Zsh 5.3+).
  • Makes an excellent starting point for your own custom prompt.


Can be installed with npm or manually. Requires Git 2.0.0+ and ZSH 5.2+. Older versions of ZSH are known to work, but they are not recommended.


$ npm install --global pure-prompt

That's it. Skip to Getting started.


  1. Either…
  1. Symlink pure.zsh to somewhere in $fpath with the name prompt_pure_setup.

  2. Symlink async.zsh in $fpath with the name async.


$ ln -s "$PWD/pure.zsh" /usr/local/share/zsh/site-functions/prompt_pure_setup
$ ln -s "$PWD/async.zsh" /usr/local/share/zsh/site-functions/async

Run echo $fpath to see possible locations.

For a user-specific installation (which would not require escalated privileges), simply add a directory to $fpath for that user:

# .zshenv or .zshrc
fpath=( "$HOME/.zfunctions" $fpath )

Then install the theme there:

$ ln -s "$PWD/pure.zsh" "$HOME/.zfunctions/prompt_pure_setup"
$ ln -s "$PWD/async.zsh" "$HOME/.zfunctions/async"

Getting started

Initialize the prompt system (if not so already) and choose pure:

# .zshrc
autoload -U promptinit; promptinit
prompt pure


Option Description Default value
PURE_CMD_MAX_EXEC_TIME The max execution time of a process before its run time is shown when it exits. 5 seconds
PURE_GIT_PULL=0 Prevents Pure from checking whether the current Git remote has been updated.
PURE_GIT_UNTRACKED_DIRTY=0 Do not include untracked files in dirtiness check. Mostly useful on large repos (like WebKit).
PURE_GIT_DELAY_DIRTY_CHECK Time in seconds to delay git dirty checking when git status takes > 5 seconds. 1800 seconds
PURE_PROMPT_SYMBOL Defines the prompt symbol.
PURE_PROMPT_VICMD_SYMBOL Defines the prompt symbol used when the vicmd keymap is active (VI-mode).
PURE_GIT_DOWN_ARROW Defines the git down arrow symbol.
PURE_GIT_UP_ARROW Defines the git up arrow symbol.


# .zshrc

autoload -U promptinit; promptinit

# optionally define some options

prompt pure


In the screenshot you see Pure running in Hyper with the hyper-snazzy theme and Menlo font.

The Tomorrow Night Eighties theme with the Droid Sans Mono font (15pt) is also a nice combination.
Just make sure you have anti-aliasing enabled in your terminal.

To have commands colorized as seen in the screenshot, install zsh-syntax-highlighting.



  1. Set ZSH_THEME="" in your .zshrc to disable oh-my-zsh themes.
  2. Follow the Pure Install instructions.
  3. Do not enable the following (incompatible) plugins: vi-mode, virtualenv.

NOTE: oh-my-zsh overrides the prompt so Pure must be activated after source $ZSH/oh-my-zsh.sh.


Pure is bundled with Prezto. No need to install it.

Add prompt pure to your ~/.zpreztorc.


Pure is bundled with Zim. No need to install it.

Set zprompt_theme='pure' in ~/.zimrc.


Update your .zshrc file with the following two lines (order matters). Do not use the antigen theme function.

antigen bundle mafredri/zsh-async
antigen bundle sindresorhus/pure


Update your .zshrc file with the following two lines (order matters):

antibody bundle mafredri/zsh-async
antibody bundle sindresorhus/pure


Update your .zshrc file with the following two lines:

zplug mafredri/zsh-async, from:github
zplug sindresorhus/pure, use:pure.zsh, from:github, as:theme


Update your .zshrc file with the following two lines (order matters):

zplugin ice pick"async.zsh" src"pure.zsh"
zplugin light sindresorhus/pure


There are currently no FAQs.

See FAQ Archive for previous FAQs.



Sindre Sorhus Mathias Fredriksson
Sindre Sorhus Mathias Fredriksson


MIT © Sindre Sorhus