⬆️ Hey! Want to migrate from v3.x to v4.x? Check our migration guide, done with ❤️
Pretty, minimal and fast Fish 🐟 prompt, ported from
zsh
.
≥3.x
fisher install pure-fish/pure
Via cURL:
# Download the installer to `/tmp`
curl git.io/pure-fish --output /tmp/pure_installer.fish --location --silent
# Source and trigger the installer
source /tmp/pure_installer.fish; and install_pure
Fully customizable (colors, symbols and features):
- Excellent prompt character
❯
:- Change
❯
to red when previous command has failed ; - Start prompt with current working directory 🏴 ;
- Compact-mode (single-line prompt) 🏴 ;
- Change
- Display current folder tail ;
- check for new release on start 🏴 ;
- Display username and hostname when in an
SSH
session ; - Display command duration when longer than
5
seconds ; - Display
Python
virtualenv when activated 🏴 ; - Display
VI
mode and custom symbol for non-insert mode 🏴 ; - Display
kubernetes
context and namespace - Display container indicator (e.g.
docker
,podman
,LXC
/LXD
) 🏴 - Show system time 🏴 ;
- Show number of running jobs 🏴 ;
- Prefix when
root
🏴 ; - Display
git
branch name 🏴 ;- Display
*
whengit
repository is dirty ; - Display
≡
whengit
repository is stashed ; - Display
⇡
when branch is ahead (commits to push) ; - Display
⇣
when branch is behind (commits to pull) ; - Async update when configured with fish-async-prompt ;
- Display
- Update terminal title with current folder and command ;
- Detect when running in a container ;
- Shorten current folder component 🏴;
🏴: Enabled or disabled via a feature flag.
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
Option | Default | Description |
---|---|---|
pure_symbol_container_prefix |
Prefix when being inside a container (to customize) | |
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_symbol_k8s_prefix |
☸ |
Prefix when being connected to Kubernetes/K8s |
pure_symbol_prefix_root_prompt |
# |
Prefix prompt when logged in as root . |
pure_symbol_prefix_root_prompt |
# |
Prefix when being root user |
pure_symbol_prompt |
❯ |
Prompt symbol. |
pure_symbol_reverse_prompt |
❮ |
VI non-insert mode symbol. |
pure_symbol_ssh_prefix |
Prefix when being connected to SSH session (default: undefined) | |
pure_symbol_title_bar_separator |
- |
Separator in terminal's windows title. |
pure_symbol_virtualenv_prefix |
Prefix when a Python virtual env is activated (default: undefined) |
ℹ️ Need safer
git
symbols?
Option | Default | Description |
---|---|---|
pure_begin_prompt_with_current_directory |
true |
true : pwd git , SSH , duration.false : SSH pwd git , duration. |
pure_check_for_new_release |
false |
true : check repo for new release (on every shell start) |
pure_enable_container_detection |
true |
false : Do not check if run in container (e.g. docker , podman , LXC /LXD , etc.). |
pure_enable_git |
true |
Show info about Git repository. |
pure_enable_k8s |
false |
true : shows kubernetes context and namespace. |
pure_enable_single_line_prompt |
false |
true : Compact prompt as a single line |
pure_enable_virtualenv |
true |
Show virtual env name (based on VIRTUAL_ENV or CONDA_DEFAULT_ENV ). |
pure_reverse_prompt_symbol_in_vimode |
true |
true : ❮ indicate a non-insert mode.false : indicate vi mode with [I] , [N] , [V] . |
pure_separate_prompt_on_error |
false |
Show last command exit code as a separate character. |
pure_shorten_prompt_current_directory_length |
0 |
Shorten every prompt path component but the last to X characters (0 do not shorten) |
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_show_jobs |
false |
Show Number of running jobs |
pure_show_prefix_root_prompt |
false |
true : shows prompt prefix when logged in as root . |
pure_show_subsecond_command_duration |
false |
Show subsecond (ex. 1.5s) in command duration. |
pure_show_system_time |
false |
true : shows system time before the prompt symbol (as %H:%M:%S ). |
pure_threshold_command_duration |
5 |
Show command duration when above this value (seconds). |
ℹ️ See
set_color
documentation for full possibilities.
⚠️ The absence of$
sign is expected inpure_
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_commits pure_color_git_unpushed_commits |
cyan |
pure_color_light |
pure_color_username_root |
white |
pure_color_mute |
pure_color_git_branch pure_color_git_dirty pure_color_git_stash pure_color_hostname pure_color_at_sign pure_color_username_normal pure_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 |
requirements: docker
(isolate from your environment), get familiar with CONTRIBUTING.md guidelines.
Specify the FISH_VERSION
you want, and the CMD
executed by the container:
make build-pure-on FISH_VERSION=3.3.1
make dev-pure-on FISH_VERSION=3.3.1 CMD="fishtape tests/*.test.fish"
- @andreiborisov for the docker images ;
- @jorgebucaran for fishtape ;
- @rafaelrinaldi for starting the project ;