From c65a29c76f80611875035ee6d628fa244c0ae6cf Mon Sep 17 00:00:00 2001 From: Vishwas P <62875653+RealVishy@users.noreply.github.com> Date: Sat, 10 Aug 2024 06:28:04 +1000 Subject: [PATCH] feat: container indicator for fish shell (#1569) --- .../fish/vendor_functions.d/fish_prompt.fish | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 system_files/shared/usr/share/fish/vendor_functions.d/fish_prompt.fish diff --git a/system_files/shared/usr/share/fish/vendor_functions.d/fish_prompt.fish b/system_files/shared/usr/share/fish/vendor_functions.d/fish_prompt.fish new file mode 100644 index 00000000000..9433c78146a --- /dev/null +++ b/system_files/shared/usr/share/fish/vendor_functions.d/fish_prompt.fish @@ -0,0 +1,41 @@ +function fish_prompt --description 'Default prompt with container detection' + set -l last_pipestatus $pipestatus + set -lx __fish_last_status $status # Export for __fish_print_pipestatus. + set -l normal (set_color normal) + set -q fish_color_status + or set -g fish_color_status red + set -g fish_color_user brgreen + + # Color the prompt differently when we're root + set -l color_cwd $fish_color_cwd + set -l suffix '>' + if functions -q fish_is_root_user; and fish_is_root_user + if set -q fish_color_cwd_root + set color_cwd $fish_color_cwd_root + end + set suffix '#' + end + + # Detect if we are in a container + if test -n "$CONTAINER_ID" + set -g prompt_host "[$CONTAINER_ID]" + set -g prefix_icon "📦 " + else + set -g prompt_host "$hostname" + set -g prefix_icon "" + end + + # Write pipestatus + # If the status was carried over (if no command is issued or if `set` leaves the status untouched), don't bold it. + set -l bold_flag --bold + set -q __fish_prompt_status_generation; or set -g __fish_prompt_status_generation $status_generation + if test $__fish_prompt_status_generation = $status_generation + set bold_flag + end + set __fish_prompt_status_generation $status_generation + set -l status_color (set_color $fish_color_status) + set -l statusb_color (set_color $bold_flag $fish_color_status) + set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) + + echo -n -s $prefix_icon (set_color $fish_color_user) "$USER" $normal "@" $prompt_host' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal " "$prompt_status $suffix " " +end \ No newline at end of file