Home

Awesome

Pure

Pretty, minimal and fast ZSH prompt

<img src="screenshot.png" width="864">

Overview

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

Why?

Install

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

$ npm install --global pure-prompt

That's it. Skip to Getting started.

Manually

  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.

Example

$ 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

Options

OptionDescriptionDefault value
PURE_CMD_MAX_EXEC_TIMEThe max execution time of a process before its run time is shown when it exits.5 seconds
PURE_GIT_PULL=0Prevents Pure from checking whether the current Git remote has been updated.
PURE_GIT_UNTRACKED_DIRTY=0Do not include untracked files in dirtiness check. Mostly useful on large repos (like WebKit).
PURE_GIT_DELAY_DIRTY_CHECKTime in seconds to delay git dirty checking when git status takes > 5 seconds.1800 seconds
PURE_PROMPT_SYMBOLDefines the prompt symbol.
PURE_PROMPT_VICMD_SYMBOLDefines the prompt symbol used when the vicmd keymap is active (VI-mode).
PURE_GIT_DOWN_ARROWDefines the git down arrow symbol.
PURE_GIT_UP_ARROWDefines the git up arrow symbol.

Colors

As explained in ZSH's manual, color values can be:

Colors can be changed by using zstyle with a pattern of the form :prompt:pure:$color_name and style color. The color names, their default, and what part they affect are:

The following diagram shows where each color is applied on the prompt:

path
|          git:branch
|          |       git:arrow
|          |       |        host
|          |       |        |
~/dev/pure master* ⇡ zaphod@heartofgold  42s
venv ❯               |                   |
|    |               |                   execution_time
|    |               user
|    prompt
virtualenv

RGB colors

There are two ways to use RGB colors with the hexadecimal format. The correct way is to use a terminal that support 24-bit colors and enable this feature as explained in the terminal's documentation.

If you can't use such terminal, the module zsh/nearcolor can be useful. It will map any hexadecimal color to the nearest color in the 88 or 256 color palettes of your termial, but without using the first 16 colors, since their values can be modified by the user. Keep in mind that when using this module you won't be able to display true RGB colors. It only allows you to specify colors in a more convenient way. The following is an example on how to use this module:

# .zshrc
zmodload zsh/nearcolor
zstyle :prompt:pure:path color '#FF0000'

Example

# .zshrc

autoload -U promptinit; promptinit

# optionally define some options
PURE_CMD_MAX_EXEC_TIME=10

# change the path color
zstyle :prompt:pure:path color white

# change the color for both `prompt:success` and `prompt:error`
zstyle ':prompt:pure:prompt:*' color cyan

prompt pure

Tips

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.<br> Just make sure you have anti-aliasing enabled in your terminal.

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

Integration

oh-my-zsh

  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.

prezto

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

Add prompt pure to your ~/.zpreztorc.

zim

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

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

antigen

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

antibody

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

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

zplug

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

zplugin

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

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

FAQ

There are currently no FAQs.

See FAQ Archive for previous FAQs.

Ports

Team

Sindre SorhusMathias Fredriksson
Sindre SorhusMathias Fredriksson