Convert Figma logo to code with AI

sindresorhus logopure

Pretty, minimal and fast ZSH prompt

13,724
989
13,724
37

Top Related Projects

🚀✨ Minimalistic, powerful and extremely customizable Zsh prompt

A Zsh theme

179,498

🙃 A delightful community-driven (with 2,400+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, python, etc), 140+ 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.

14,262

The configuration framework for Zsh

50,158

☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!

Fish-like autosuggestions for zsh

Quick Overview

Pure is a minimalist and fast Zsh prompt that provides essential information without cluttering the command line. It's designed to be lightweight, customizable, and visually appealing, offering a clean and efficient command-line experience for Zsh users.

Pros

  • Minimal and unobtrusive design
  • Fast performance, even in large Git repositories
  • Easy to customize and extend
  • Supports both Zsh and Fish shells

Cons

  • Limited built-in features compared to some more complex prompts
  • Requires a Powerline-patched font for optimal display
  • May require additional configuration for some advanced features
  • Not compatible with older versions of Zsh (requires Zsh >= 5.2)

Getting Started

  1. Install Pure using a package manager or manually:
# Using npm
npm install --global pure-prompt

# Using Homebrew
brew install pure
  1. Add the following to your .zshrc file:
autoload -U promptinit; promptinit
prompt pure
  1. Restart your shell or run source ~/.zshrc to apply the changes.

For more detailed installation instructions and customization options, refer to the project's README on GitHub.

Competitor Comparisons

🚀✨ Minimalistic, powerful and extremely customizable Zsh prompt

Pros of Spaceship Prompt

  • More customizable with a wide range of built-in modules
  • Supports multiple programming languages and tools out of the box
  • Offers a more detailed and informative prompt with icons and colors

Cons of Spaceship Prompt

  • Slower performance due to its complexity and numerous features
  • Requires more configuration to set up and customize
  • May appear cluttered or overwhelming for users who prefer minimalism

Code Comparison

Pure:

PROMPT='%(?.%F{magenta}.%F{red})❯%f '
RPROMPT='%F{242}${vcs_info_msg_0_}%f'

Spaceship Prompt:

SPACESHIP_PROMPT_ORDER=(
  user          # Username section
  dir           # Current directory section
  host          # Hostname section
  git           # Git section (git_branch + git_status)
  exec_time     # Execution time
  line_sep      # Line break
  jobs          # Background jobs indicator
  exit_code     # Exit code section
  char          # Prompt character
)

Pure offers a minimalistic and fast prompt with basic Git integration, while Spaceship Prompt provides a feature-rich and highly customizable experience with support for various programming environments and tools. Pure is ideal for users who prioritize simplicity and performance, whereas Spaceship Prompt caters to those who want a more informative and visually appealing prompt at the cost of some complexity and speed.

A Zsh theme

Pros of Powerlevel10k

  • Highly customizable with numerous configuration options
  • Fast performance, even with complex prompts
  • Supports instant prompt for faster shell startup

Cons of Powerlevel10k

  • Steeper learning curve due to extensive configuration options
  • May be considered visually "busy" compared to Pure's minimalist design
  • Requires a Powerline-patched font for full functionality

Code Comparison

Pure:

# .zshrc
autoload -U promptinit; promptinit
prompt pure

Powerlevel10k:

# .zshrc
source ~/powerlevel10k/powerlevel10k.zsh-theme

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

Pure offers a minimalist, clean prompt design with a focus on simplicity and ease of use. It provides essential information without overwhelming the user and requires minimal configuration.

Powerlevel10k, on the other hand, offers a feature-rich prompt with extensive customization options. It provides more detailed information and visual elements, catering to users who prefer a more informative and visually appealing prompt. While it may require more setup and configuration, Powerlevel10k offers greater flexibility and functionality for power users.

179,498

🙃 A delightful community-driven (with 2,400+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, python, etc), 140+ 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.

Pros of Oh My Zsh

  • Extensive plugin ecosystem with hundreds of pre-configured plugins
  • Large community and active development, ensuring regular updates and support
  • Includes a wide range of themes for customizing the shell appearance

Cons of Oh My Zsh

  • Can be slower to load due to its large codebase and numerous features
  • May include unnecessary features for users who prefer a minimal setup
  • Configuration can be more complex for beginners due to the many options available

Code Comparison

Oh My Zsh (example theme configuration):

ZSH_THEME="robbyrussell"
plugins=(git docker npm)
source $ZSH/oh-my-zsh.sh

Pure (example configuration):

autoload -U promptinit; promptinit
prompt pure

Summary

Oh My Zsh is a comprehensive Zsh configuration framework with a vast array of features, plugins, and themes. It offers a rich out-of-the-box experience but can be slower and more complex. Pure, on the other hand, is a minimalist and fast Zsh prompt that focuses on simplicity and performance. Pure requires less configuration but offers fewer built-in features compared to Oh My Zsh. The choice between the two depends on whether you prefer a feature-rich, community-driven framework or a lightweight, performance-oriented prompt.

14,262

The configuration framework for Zsh

Pros of Prezto

  • More comprehensive: Prezto is a full Zsh configuration framework, offering a wide range of modules and themes
  • Highly customizable: Users can easily enable/disable modules and customize their Zsh environment
  • Active community: Prezto has a larger user base and more frequent updates

Cons of Prezto

  • Steeper learning curve: Due to its extensive features, it may take longer to set up and master
  • Potential performance impact: The numerous modules and features can slightly slow down shell startup time
  • More complex configuration: Managing multiple modules and settings may be overwhelming for some users

Code Comparison

Prezto configuration (snippet from .zpreztorc):

zstyle ':prezto:*:*' color 'yes'
zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory'

Pure prompt setup:

autoload -U promptinit; promptinit
prompt pure

Pure offers a simpler, more focused approach to enhancing the Zsh prompt, while Prezto provides a comprehensive Zsh configuration framework with numerous features and customization options. Pure is easier to set up and maintain, but Prezto offers more extensive functionality for users who want a fully customized Zsh environment.

50,158

☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!

Pros of Starship

  • Cross-shell compatibility (works with Bash, Zsh, Fish, and more)
  • Highly customizable with numerous modules and configuration options
  • Faster performance due to being written in Rust

Cons of Starship

  • More complex setup and configuration process
  • Larger footprint and dependencies (requires Rust runtime)
  • Steeper learning curve for advanced customization

Code Comparison

Pure (Zsh):

# .zshrc
autoload -U promptinit; promptinit
prompt pure

Starship (Bash):

# .bashrc
eval "$(starship init bash)"

# starship.toml
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"

Summary

Starship offers more features and cross-shell compatibility, making it suitable for users who work with multiple shells or desire extensive customization. Pure, on the other hand, provides a simpler, lightweight solution specifically for Zsh users who prefer a minimalist approach with easy setup. The choice between the two depends on the user's specific needs, preferred shell, and desired level of customization.

Fish-like autosuggestions for zsh

Pros of zsh-autosuggestions

  • Provides real-time suggestions based on command history, enhancing productivity
  • Works seamlessly with various Zsh themes and plugins
  • Offers customizable suggestion strategies and appearance

Cons of zsh-autosuggestions

  • May slow down terminal performance on older systems or with large history files
  • Requires additional configuration for optimal use
  • Can be distracting for users who prefer a minimal command-line interface

Code Comparison

zsh-autosuggestions:

# Enable zsh-autosuggestions
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

# Customize suggestion color
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'

pure:

# Load Pure
autoload -U promptinit; promptinit
prompt pure

# Customize Pure prompt
PURE_CMD_MAX_EXEC_TIME=10

While zsh-autosuggestions focuses on providing intelligent command suggestions, pure is a minimalist and fast Zsh prompt. zsh-autosuggestions enhances command input efficiency, whereas pure offers a clean and informative prompt display. The code snippets demonstrate the simplicity of integrating both projects into a Zsh configuration, with zsh-autosuggestions requiring a source command and optional customization, and pure utilizing Zsh's built-in promptinit functionality.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Pure

Pretty, minimal and fast ZSH prompt

Overview

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

Why?

  • 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 or a container.
  • 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.

Install

Can be installed with npm (not yarn) or manually. Requires Git 2.15.2+ 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.

Homebrew

brew install pure

If you're not using ZSH from Homebrew (brew install zsh and $(brew --prefix)/bin/zsh), you must also add the site-functions to your fpath in $HOME/.zshrc:

fpath+=("$(brew --prefix)/share/zsh/site-functions")

Manually

  1. Clone this repo somewhere. Here we'll use $HOME/.zsh/pure.
mkdir -p "$HOME/.zsh"
git clone https://github.com/sindresorhus/pure.git "$HOME/.zsh/pure"
  1. Add the path of the cloned repo to $fpath in $HOME/.zshrc.
# .zshrc
fpath+=($HOME/.zsh/pure)

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_PULLPrevents Pure from checking whether the current Git remote has been updated.1
PURE_GIT_UNTRACKED_DIRTYDo not include untracked files in dirtiness check. Mostly useful on large repos (like WebKit).1
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.⇡
PURE_GIT_STASH_SYMBOLDefines the git stash symbol.≡

Zstyle options

Showing git stash status as part of the prompt is not activated by default. To activate this you'll need to opt in via zstyle:

zstyle :prompt:pure:git:stash show yes

You can set Pure to only git fetch the upstream branch of the current local branch. In some cases, this can result in faster updates for Git arrows, but for most users, it's better to leave this setting disabled. You can enable it with:

zstyle :prompt:pure:git:fetch only_upstream yes

nix-shell integration adds the shell name to the prompt when used from within a nix shell. It is enabled by default, you can disable it with:

zstyle :prompt:pure:environment:nix-shell show no

Colors

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

  • A decimal integer corresponding to the color index of your terminal. If your $TERM is xterm-256color, see this chart.
  • The name of one of the following nine colors: black, red, green, yellow, blue, magenta, cyan, white, and default (the terminal’s default foreground)
  • # followed by an RGB triplet in hexadecimal format, for example #424242. Only if your terminal supports 24-bit colors (true color) or when the zsh/nearcolor module is loaded.

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:

  • execution_time (yellow) - The execution time of the last command when exceeding PURE_CMD_MAX_EXEC_TIME.
  • git:arrow (cyan) - For PURE_GIT_UP_ARROW and PURE_GIT_DOWN_ARROW.
  • git:stash (cyan) - For PURE_GIT_STASH_SYMBOL.
  • git:branch (242) - The name of the current branch when in a Git repository.
  • git:branch:cached (red) - The name of the current branch when the data isn't fresh.
  • git:action (yellow) - The current action in progress (cherry-pick, rebase, etc.) when in a Git repository.
  • git:dirty (218) - The asterisk showing the branch is dirty.
  • host (242) - The hostname when on a remote machine.
  • path (blue) - The current path, for example, PWD.
  • prompt:error (red) - The PURE_PROMPT_SYMBOL when the previous command has failed.
  • prompt:success (magenta) - The PURE_PROMPT_SYMBOL when the previous command has succeeded.
  • prompt:continuation (242) - The color for showing the state of the parser in the continuation prompt (PS2). It's the pink part in this screenshot, it appears in the same spot as virtualenv. You could for example matching both colors so that Pure has a uniform look.
  • suspended_jobs (red) - The ✦ symbol indicates that jobs are running in the background.
  • user (242) - The username when on remote machine.
  • user:root (default) - The username when the user is root.
  • virtualenv (242) - The name of the Python virtualenv when in use.

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

┌────────────────────────────────────────────────────── user
│      ┌─────────────────────────────────────────────── host
│      │           ┌─────────────────────────────────── path
│      │           │          ┌──────────────────────── git:branch
│      │           │          │     ┌────────────────── git:dirty
│      │           │          │     │ ┌──────────────── git:action
│      │           │          │     │ │        ┌─────── git:arrow
│      │           │          │     │ │        │ ┌───── git:stash
│      │           │          │     │ │        │ │ ┌─── execution_time
│      │           │          │     │ │        │ │ │
zaphod@heartofgold ~/dev/pure master* rebase-i ⇡ ≡ 42s
venv ❯
│    │
│    └───────────────────────────────────────────────── prompt
└────────────────────────────────────────────────────── virtualenv (or prompt:continuation)

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 terminal, 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

# turn on git stash status
zstyle :prompt:pure:git:stash show yes

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

Add zmodule sindresorhus/pure --source async.zsh --source pure.zsh to your .zimrc and run zimfw install.

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

zinit

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

zinit ice compile'(pure|async).zsh' pick'async.zsh' src'pure.zsh'
zinit light sindresorhus/pure

zi

Update your .zshrc file with the following line:

zi light-mode for @sindresorhus/pure

See the ZI wiki for more.

FAQ

There are currently no FAQs.

See FAQ Archive for previous FAQs.

Ports

Team

Sindre SorhusMathias Fredriksson
Sindre SorhusMathias Fredriksson

NPM DownloadsLast 30 Days