impure
Pretty, minimal and fast ZSH prompt
Overview
Most prompts are cluttered, ugly and slow. I wanted something visually pleasing that stayed out of my 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.
- Makes an excellent starting point for your own custom prompt.
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 impure-prompt
That's it. Skip to Getting started.
Manually
- Either…
- Clone this repo
- add it as a submodule, or
- just download
impure.zsh
andasync.zsh
-
Symlink
impure.zsh
to somewhere in$fpath
with the nameprompt_impure_setup
. -
Symlink
async.zsh
in$fpath
with the nameasync
.
Example
$ ln -s "$PWD/impure.zsh" /usr/local/share/zsh/site-functions/prompt_impure_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=
Then install the theme there:
$ ln -s "$PWD/impure.zsh" "$HOME/.zfunctions/prompt_impure_setup"$ ln -s "$PWD/async.zsh" "$HOME/.zfunctions/async"
Getting started
Initialize the prompt system (if not so already) and choose impure
:
# .zshrc autoload -U promptinit; promptinitprompt impure
Options
IMPURE_CMD_MAX_EXEC_TIME
The max execution time of a process before its run time is shown when it exits. Defaults to 5
seconds.
IMPURE_GIT_PULL
Set IMPURE_GIT_PULL=0
to prevent impure from checking whether the current Git remote has been updated.
IMPURE_GIT_UNTRACKED_DIRTY
Set IMPURE_GIT_UNTRACKED_DIRTY=0
to not include untracked files in dirtiness check. Only really useful on extremely huge repos like the WebKit repo.
IMPURE_GIT_DELAY_DIRTY_CHECK
Time in seconds to delay git dirty checking for large repositories (git status takes > 5 seconds). The check is performed asynchronously, this is to save CPU. Defaults to 1800
seconds.
IMPURE_PROMPT_SYMBOL
Defines the prompt symbol. The default value is ❯
.
IMPURE_GIT_BRANCH_SYMBOL
Defines the git branch symbol. The default value is
. (probably not visible correctly if the font in use doesn't support this unicode char <U+E0A0>
)
IMPURE_GIT_DOWN_ARROW
Defines the git down arrow symbol. The default value is ⇣
.
IMPURE_GIT_UP_ARROW
Defines the git up arrow symbol. The default value is ⇡
.
Tips
In the screenshot you see impure running in Hyper with the an-old-hype theme, hyperborder (which gives it that amazing full gradient brackground) and Fira Code font.
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
- Symlink (or copy)
impure.zsh
to~/.oh-my-zsh/custom/impure.zsh-theme
. - Symlink (or copy)
async.zsh
to~/.oh-my-zsh/custom/async.zsh
. - Set
ZSH_THEME="impure"
in your.zshrc
file.
Or skip the oh-my-zsh
integration above and simply:
- Set
ZSH_THEME=""
in your.zshrc
to disable oh-my-zsh themes. - Follow the impure Install instructions.
Original work done by
Sindre Sorhus | Mathias Fredriksson
License
MIT © Federico Giovagnoli