# name: Nim # author: Guilhem "Nim" Saurel − https://github.com/nim65s/dotfiles/ # Vi-mode # The default mode prompt would be prefixed, which ruins our alignment. function fish_mode_prompt; end function fish_prompt set -l retc red test $status = 0; and set retc green set -q __fish_git_prompt_showupstream or set -g __fish_git_prompt_showupstream auto function _nim_prompt_wrapper set retc $argv[1] set -l field_name $argv[2] set -l field_value $argv[3] set_color normal set_color $retc echo -n '─' set_color -o green echo -n '[' set_color normal test -n $field_name and echo -n $field_name: set_color $retc echo -n $field_value set_color -o green echo -n ']' end set_color $retc echo -n '┬─' set_color -o green echo -n [ if functions -q fish_is_root_user; and fish_is_root_user set_color -o red else set_color -o yellow end echo -n $USER set_color -o white echo -n @ if test -z "$SSH_CLIENT" set_color -o blue else set_color -o cyan end echo -n (prompt_hostname) set_color -o white echo -n :(prompt_pwd) set_color -o green echo -n ']' test -n "$IN_NIX_SHELL" and _nim_prompt_wrapper $retc '' 'nix-shell' # Date _nim_prompt_wrapper $retc '' (date +%X) if test "$fish_key_bindings" = fish_vi_key_bindings or test "$fish_key_bindings" = fish_hybrid_key_bindings set -l mode switch $fish_bind_mode case default set mode (set_color --bold red)N case insert set mode (set_color --bold green)I case replace_one set mode (set_color --bold green)R echo '[R]' case replace set mode (set_color --bold cyan)R case visual set mode (set_color --bold magenta)V end set mode $mode(set_color normal) _nim_prompt_wrapper $retc '' $mode end # Virtual Environment set -q VIRTUAL_ENV_DISABLE_PROMPT or set -g VIRTUAL_ENV_DISABLE_PROMPT true set -q VIRTUAL_ENV and _nim_prompt_wrapper $retc V (path basename "$VIRTUAL_ENV") # git set -l prompt_git (fish_git_prompt '%s') test -n "$prompt_git" and _nim_prompt_wrapper $retc G $prompt_git # Battery status type -q acpi and test (acpi -a 2> /dev/null | string match -r off) and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-) # New line echo # Background jobs set_color normal for job in (jobs) set_color $retc echo -n '│ ' set_color brown echo $job end set_color normal set_color $retc echo -n '╰─>' set_color -o red echo -n '$ ' set_color normal end