
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

