shellfishpwd

How do I display only the current directory name and not the entire path (pwd) shown in fish/tile prompt?


Good morning, please I installed fish (version 3.6.1) with tide (version 5.5.1) on Debian. I configured tide with the following options selected ... Prompt Style (3) Rainbow Prompt Colors (1) True color Show current time? (1) No Prompt Separators (2) Vertical Prompt Heads (2) Blurred Prompt Tails (2) Blurred Prompt Height (1) One line Prompt Spacing (2) Sparse Icons (2) Many icons

All is well with this prompt for me until I go into several directories, like cd ~/Development/freecodecamp/ResponsiveWebDesign/C01\ Learn\ HTML/ and the result is ░▒▓    ~/Development/freecodecamp/ResponsiveWebDesign/C01 Learn HTML   master ▓▒░ I would desire to have ... ░▒▓    C01 Learn HTML   master ▓▒░

The only modification from the default fish/tide installation

cat ~/.config/fish/conf.d/10-camechi-config.fish
# My configurations for fish shell   20230615

function fish_greeting
    fortune
end

if type -q exa
    alias ll "exa -l -g --icons"
    alias lla "ll -a"
end

set -gx PATH $HOME/bin $HOME/.local/bin $PATH

My Screen I would need necessary assistance to get the desired prompt.

I have read the documentations and tried some old hints from the forums/websites. Using basename (pwd) or basename ($PWD) give me a text-like prompt.

I desire the current directory only with the fancy prompt in the image ;)

Thank you


Solution

  • I succeeded in getting my desired prompt, showing only the current directory name. Thanks to @faho for the helpful hint.

    I created a fish script, 15-camechi_tide_pwd.fish, in the conf.d directory rather than directly changing the _tide_pwd.fish in functions directory. Below is the content of 15-camechi_tide_pwd.fish

    set_color -o $tide_pwd_color_anchors | read -l color_anchors
    set_color $tide_pwd_color_truncated_dirs | read -l color_truncated
    set -l reset_to_color_dirs (set_color normal -b $tide_pwd_bg_color; set_color $tide_pwd_color_dirs)
    
    set -l unwritable_icon $tide_pwd_icon_unwritable' '
    set -l home_icon $tide_pwd_icon_home' '
    set -l pwd_icon $tide_pwd_icon' '
    
    eval "function _tide_pwd
        if set -l split_pwd (string replace -r '^$HOME' '' -- \$PWD | string split /)
            test -w . && set -f split_output \"$pwd_icon\$split_pwd[1]\" ||
                set -f split_output \"$unwritable_icon\$split_pwd[1]\"
            set split_output[-1] \"$color_anchors\$split_output[-1]$reset_to_color_dirs\"
        else
            set -f split_output \"$home_icon$color_anchors\"
        end
        string join -- / \"$reset_to_color_dirs\$split_output[1]\$(basename (prompt_pwd))\"
    end"
    

    Image of my terminal