
Pure  โฏโฎโฏ¶
Pretty, minimal and fast Fish ๐ prompt, ported from
zsh.
 Install¶
Success
Pure requires Fish โฅ3.x
fisher install pure-fish/pure
- 
Download the installer to
/tmpcurl git.io/pure-fish --output /tmp/pure_installer.fish --location --silent - 
Source and trigger the installer
source /tmp/pure_installer.fish; and install_pure 
 Configuration¶
You can tweak pure behavior and color by changing universal variables either directly in the terminal or in your config.fish, e.g.:
set --universal pure_show_system_time true
set --universal pure_color_system_time pure_color_mute
Features¶
Overview¶
Fully customizable (colors, symbols and features):
- Display username and hostname when in an 
SSHsession ๐ ; - Display command duration when longer than 
5seconds ๐ ; - Display 
Pythonvirtualenv when activated ๐ด๐ ; - Display 
AWSprofile when set ๐ด๐ ; - Display 
VImode and custom symbol for non-insert mode ๐ด๐ ; - Display 
kubernetescontext and namespace ๐ด๐ ; - Detect when running in a container (e.g. 
docker,podman,LXC/LXD) ๐ด๐ - Indicate if a 
nix developshell is activated ๐ด๐ . - Show system time ๐ด ;
 - Show number of running jobs ๐ด ;
 - Prefix when 
root๐ด๐ ; - 
Display
gitbranch name ๐ด๐ ;- Display 
*whengitrepository is dirty ; - Display 
โกwhengitrepository is stashed ; - Display 
โกwhen branch is ahead (commits to push) ; - Display 
โฃwhen branch is behind (commits to pull) ; - Display the number of stashes, ahead and behind commits (e.g. 
โก3 โก5 โฃ2) ; - Async update when configured with fish-async-prompt ;
 
 - Display 
 - Shorten or truncate current folder component ๐ด๐ ;
 - and moreโฆ
 
๐ด means it's controlled by a feature flag, ๐ mean it's configurable.
Check For New Release¶
| Option | Default | Description | 
|---|---|---|
pure_check_for_new_release | 
false | 
true: check repo for new release (on every shell start) | 
๐ Faster Prompt
Checking new release send a HTTP request that slow down your prompt rendering
as it wait for remote server response. Set it to false speed up rendering:
set --universal pure_check_for_new_release false


Container Detection (Docker)¶
| Option | Default | Description | 
|---|---|---|
pure_enable_container_detection | 
true | 
false: Do not check pure runs inside a container (e.g. docker, podman, LXC/LXD, etc.). | 
pure_symbol_container_prefix | 
Prefix when being inside a container (to customize) | 


Current Working Directory¶
| Option | Default | Description | 
|---|---|---|
pure_begin_prompt_with_current_directory | 
true | 
true: pwd git, SSH, duration.false: SSH pwd git, duration. | 
pure_shorten_prompt_current_directory_length | 
0 | 
Shorten every prompt path component but the last to X characters (0 do not shorten) | 
pure_truncate_prompt_current_directory_keeps | 
0 | 
Truncate working directory path in prompt, but keeps the last to n components (0 full path in current directory) | 


Git¶
| Option | Default | Description | 
|---|---|---|
pure_enable_git | 
true | 
Show info about Git repository. | 
pure_symbol_git_dirty | 
* | 
Repository is Dirty (uncommitted/untracked changes). | 
pure_symbol_git_stash | 
โก | 
Repository git stash status. | 
pure_symbol_git_unpulled_commits | 
โฃ | 
Branch is behind upstream (commits to pull). | 
pure_symbol_git_unpushed_commits | 
โก | 
Branch is ahead upstream (commits to push). | 
pure_show_numbered_git_indicator | 
false | 
Show number of git stash and commits behind/ahead | 
Need safer
gitsymbols?


Jobs¶
| Option | Default | Description | 
|---|---|---|
pure_show_jobs | 
false | 
Show Number of running jobs | 


Kubernetes¶
| Option | Default | Description | 
|---|---|---|
pure_symbol_k8s_prefix | 
โธ | 
Prefix when being connected to Kubernetes/K8s | 
pure_enable_k8s | 
false | 
true: shows kubernetes context and namespace. | 


NixOS¶
Indicate if nix develop shell is activated in their prompt.
| Option | Default | Description | 
|---|---|---|
pure_enable_nixdevshell | 
false | 
Indicate if a nix develop shell is activated (based on IN_NIX_SHELL). | 
pure_symbol_nixdevshell_prefix | 
โ๏ธ | 
otherwise nerdfonts: '๓ฑ ' or '๏' | 
pure_color_nixdevshell_prefix | 
pure_color_info | 
prefix color | 
pure_color_nixdevshell_symbol | 
pure_color_mute | 
symbol color | 


Prompt Symbol¶
| Option | Default | Description | 
|---|---|---|
pure_symbol_prompt | 
โฏ | 
Control the prompt symbol. | 
Previous command status¶
Previous command exit status change the prompt symbol color.


Python Virtualenv¶
| Option | Default | Description | 
|---|---|---|
pure_enable_virtualenv | 
true | 
Show virtual env name (based on VIRTUAL_ENV or CONDA_DEFAULT_ENV). | 
pure_symbol_virtualenv_prefix | 
Prefix when a Python virtual env is activated (default: undefined) | 


AWS Profile¶
| Option | Default | Description | 
|---|---|---|
pure_enable_aws_profile | 
true | 
Show AWS profile name (based on AWS_VAULT or AWS_PROFILE). | 
pure_symbol_aws_profile_prefix | 
Prefix when a AWS profile is activated (default: undefined) | 


Separate Error Symbol¶
| Option | Default | Description | 
|---|---|---|
pure_separate_prompt_on_error | 
false | 
Show last command exit code as a second prompt symbol. | 


Single Line Prompt¶
| Option | Default | Description | 
|---|---|---|
pure_enable_single_line_prompt | 
false | 
true: Compact prompt as a single line | 


SSH Session¶
| Option | Default | Description | 
|---|---|---|
pure_symbol_ssh_prefix | 
Show SSH session prefix, after path, when being connected to an SSH session (default: undefined) | 


Time¶
| Option | Default | Description | 
|---|---|---|
pure_show_system_time | 
false | 
true: shows system time before the prompt symbol (as %H:%M:%S). | 


Command Duration¶
| Option | Default | Description | 
|---|---|---|
pure_show_subsecond_command_duration | 
false | 
Show subsecond (ex. 1.5s) in command duration. | 
pure_threshold_command_duration | 
5 | 
Show command duration when above this value (seconds). | 


Title¶
| Option | Default | Description | 
|---|---|---|
pure_symbol_title_bar_separator | 
- | 
Separator in terminal's windows title. | 
pure_shorten_window_title_current_directory_length | 
0 | 
Shorten every window title path component but the last to X characters (0 do not shorten) | 
pure_truncate_window_title_current_directory_keeps | 
0 | 
Truncate working directory path in window title, but keeps the last to n components (0 full path in window title) | 
VI Mode¶
| Option | Default | Description | 
|---|---|---|
pure_reverse_prompt_symbol_in_vimode | 
true | 
true: โฎ indicate a non-insert mode.false: indicate vi mode with [I], [N], [V]. | 
pure_symbol_reverse_prompt | 
โฎ | 
VI non-insert mode symbol. | 


Working as Root¶
| Option | Default | Description | 
|---|---|---|
pure_show_prefix_root_prompt | 
false | 
true: shows prompt prefix when logged in as root. | 
pure_symbol_prefix_root_prompt | 
# | 
Prefix prompt when logged in as root. | 


Colours¶
Tip
See set_color documentation for full possibilities.
Info
The absence of $ sign is expected in pure_ named colours.
| Base Color | Inherited by | Default | 
|---|---|---|
pure_color_danger | 
pure_color_prompt_on_error | 
red | 
pure_color_dark | 
black | 
|
pure_color_info | 
pure_color_git_unpulled_commitspure_color_git_unpushed_commits | 
cyan | 
pure_color_light | 
pure_color_username_root | 
white | 
pure_color_mute | 
pure_color_git_branchpure_color_git_dirtypure_color_git_stashpure_color_hostnamepure_color_at_signpure_color_username_normalpure_color_virtualenv | 
brblack | 
pure_color_normal | 
pure_color_jobs | 
normal | 
pure_color_primary | 
pure_color_current_directory | 
blue | 
pure_color_success | 
pure_color_prompt_on_success | 
magenta | 
pure_color_warning | 
pure_color_command_duration | 
yellow | 
Troubleshooting¶
Slowness: try Async git Prompt¶
Info
Big repository can slow down the prompt rendering.
In order to ensure the git prompt updates without lag, you can add fish-async-prompt using fisher:
fisher install acomagu/fish-async-prompt
... and put this in your config.fish:
set -g async_prompt_functions _pure_prompt_git

