diff --git a/fish_prompt.fish b/fish_prompt.fish index 4c47f7f4..40198e00 100644 --- a/fish_prompt.fish +++ b/fish_prompt.fish @@ -411,6 +411,61 @@ end # Status segment # ============================== +function __bobthefish_prompt_currentos -S -d 'Display current OS version' + [ "$theme_display_currentos" = 'yes' ] + and set -l display_currentos + + if set -q display_currentos + + if ! set -q __bobthefish_os_type + if uname | grep -qi Darwin + set -gx __bobthefish_os_type "$os_type_darwin" + else if test -f /etc/synoinfo.conf + set -gx __bobthefish_os_type "$os_type_synology" + else if test -f /etc/linuxmint/info + set -gx __bobthefish_os_type "$os_type_mint" + else if test -f /etc/SuSE-release + set -gx __bobthefish_os_type "$os_type_suse" + else if test -f /etc/centos-release + set -gx __bobthefish_os_type "$os_type_centos" + else if test -f /etc/fedora-release + set -gx __bobthefish_os_type "$os_type_fedora" + else if test -f /etc/redhat-release + set -gx __bobthefish_os_type "$os_type_redhat" + else if test -f /etc/gentoo-release + set -gx __bobthefish_os_type "$os_type_gentoo" + else if test -f /etc/arch-release + set -gx __bobthefish_os_type "$os_type_arch" + else if test -f /etc/alpine-release + set -gx __bobthefish_os_type "$os_type_alpine" + else if test -f /etc/lsb-release + if cat /etc/lsb-release | grep -qi Ubuntu + set -gx __bobthefish_os_type "$os_type_ubuntu" + else if cat /etc/lsb-release | grep -qi elementary + set -gx __bobthefish_os_type "$os_type_elementary" + else if test -f /etc/debian_version + set -gx __bobthefish_os_type "$os_type_debian" + else + set -gx __bobthefish_os_type="$os_type_generic" + end + else if test -f /etc/debian_version + set -gx __bobthefish_os_type "$os_type_debian" + else if test -f /etc/os-release + if cat /etc/os-release | grep -q "Amazon"; + set -gx __bobthefish_os_type="$os_type_amazon" + else + set -gx __bobthefish_os_type="$os_type_coreos" + end + else + set -gx __bobthefish_os_type "$os_type_generic" + end + end + + __bobthefish_start_segment $color_currentos + echo -ns "$__bobthefish_os_type " + end +end + function __bobthefish_prompt_status -S -a last_status -d 'Display flags for a non-zero exit status, root user, and background jobs' set -l nonzero set -l superuser @@ -654,6 +709,12 @@ if not type -q prompt_hostname end function __bobthefish_prompt_user -S -d 'Display current user and hostname' + [ "$theme_display_ssh_keylock" = 'yes' ]; and begin ; [ -n "$SSH_CLIENT" ]; or [ -n "$SSH_TTY" ]; or [ -n "$SSH_CONNECTION" ]; or tty | fgrep pts > /dev/null ; end + and set -l display_ssh_keylock + + [ "$theme_display_split_user_hostname" = 'yes' ] + and set -l split_user_hostname + [ "$theme_display_user" = 'yes' -o \( "$theme_display_user" != 'no' -a -n "$SSH_CLIENT" \) -o \( -n "$default_user" -a "$USER" != "$default_user" \) ] and set -l display_user @@ -664,11 +725,21 @@ function __bobthefish_prompt_user -S -d 'Display current user and hostname' and set -l display_hostname if set -q display_user - __bobthefish_start_segment $color_username + if test (id -u) -eq 0; and set -q color_root_username + __bobthefish_start_segment $color_root_username + else + __bobthefish_start_segment $color_username + end + if set -q display_ssh_keylock; and ! set -q split_user_hostname + echo -ns " " + end echo -ns (whoami) end if set -q display_sudo_user + if set -q display_ssh_keylock; and ! set -q split_user_hostname; and ! set -q display_user + echo -ns " " + end if set -q display_user echo -ns ' ' else @@ -676,10 +747,11 @@ function __bobthefish_prompt_user -S -d 'Display current user and hostname' end echo -ns "($SUDO_USER)" end + echo -ns ' ' if set -q display_hostname - if set -q display_user - or set -q display_sudo_user + #if begin ; set -q display_user or set -q display_sudo_user ; end ; and ! set -q split_user_hostname + if ! set -q split_user_hostname ; and begin ; set -q display_user ; or set -q display_sudo_user ; end # reset colors without starting a new segment... # (so we can have a bold username and non-bold hostname) set_color normal @@ -687,6 +759,9 @@ function __bobthefish_prompt_user -S -d 'Display current user and hostname' echo -ns '@' (prompt_hostname) else __bobthefish_start_segment $color_hostname + if set -q display_ssh_keylock + echo -ns " " + end echo -ns (prompt_hostname) end end @@ -1060,6 +1135,7 @@ function fish_prompt -d 'bobthefish, a fish theme optimized for awesome' set -l __bobthefish_current_bg # Status flags and input mode + __bobthefish_prompt_currentos __bobthefish_prompt_status $last_status # User / hostname info diff --git a/functions/__bobthefish_colors.fish b/functions/__bobthefish_colors.fish index 93be7622..c2c97d6e 100644 --- a/functions/__bobthefish_colors.fish +++ b/functions/__bobthefish_colors.fish @@ -28,15 +28,17 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant brcyan $colorfg set -x color_k8s magenta white --bold set -x color_username white black --bold + set -x color_root_username red white --bold set -x color_hostname white black set -x color_rvm brmagenta $colorfg --bold set -x color_nvm brgreen $colorfg --bold set -x color_virtualfish brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold set -x color_desk brblue $colorfg --bold + set -x color_currentos green $colorfg --bold set -x color_nix brblue $colorfg --bold - case 'terminal-light*' +case 'terminal-light*' set -l colorfg white [ "$color_scheme" = 'terminal-light-black' ]; and set colorfg black set -x color_initial_segment_exit black red --bold @@ -60,12 +62,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant brcyan $colorfg set -x color_k8s magenta white --bold set -x color_username black white --bold + set -x color_root_username red white --bold set -x color_hostname black white set -x color_rvm brmagenta $colorfg --bold set -x color_nvm brgreen $colorfg --bold set -x color_virtualfish brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold set -x color_desk brblue $colorfg --bold + set -x color_currentos green $colorfg --bold set -x color_nix brblue $colorfg --bold case 'terminal2' 'terminal2-dark*' @@ -92,12 +96,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant brcyan $colorfg set -x color_k8s magenta white --bold set -x color_username brgrey white --bold + set -x color_root_username red white --bold set -x color_hostname brgrey white set -x color_rvm brmagenta $colorfg --bold set -x color_nvm brgreen $colorfg --bold set -x color_virtualfish brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold set -x color_desk brblue $colorfg --bold + set -x color_currentos green $colorfg --bold set -x color_nix brblue $colorfg --bold case 'terminal2-light*' @@ -124,12 +130,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant brcyan $colorfg set -x color_k8s magenta white --bold set -x color_username grey black --bold + set -x color_root_username red black --bold set -x color_hostname grey black set -x color_rvm brmagenta $colorfg --bold set -x color_nvm brgreen $colorfg --bold set -x color_virtualfish brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold set -x color_desk brblue $colorfg --bold + set -x color_currentos green $colorfg --bold set -x color_nix brblue $colorfg --bold case 'zenburn' @@ -162,12 +170,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $blue $green --bold set -x color_k8s $green $white --bold set -x color_username $grey $blue --bold + set -x color_root_username $gray $red --bold set -x color_hostname $grey $blue set -x color_rvm $red $grey --bold set -x color_nvm $green $white --bold set -x color_virtualfish $blue $grey --bold set -x color_virtualgo $blue $grey --bold set -x color_desk $blue $grey --bold + set -x color_currentos $green $white --bold set -x color_nix $blue $grey --bold case 'base16-light' @@ -211,12 +221,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $base0C $colorfg --bold set -x color_k8s $base06 $colorfg --bold set -x color_username $base02 $base0D --bold + set -x color_root_username $base08 $base0D --bold set -x color_hostname $base02 $base0D set -x color_rvm $base08 $colorfg --bold set -x color_nvm $base0B $colorfg --bold set -x color_virtualfish $base0D $colorfg --bold set -x color_virtualgo $base0D $colorfg --bold set -x color_desk $base0D $colorfg --bold + set -x color_currentos $base0B $colorfg --bold set -x color_nix $base0D $colorfg --bold case 'base16' 'base16-dark' @@ -260,12 +272,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $base0C $colorfg --bold set -x color_k8s $base0B $colorfg --bold set -x color_username $base02 $base0D --bold + set -x color_root_username $base08 $base0D --bold set -x color_hostname $base02 $base0D set -x color_rvm $base08 $colorfg --bold set -x color_nvm $base0B $colorfg --bold set -x color_virtualfish $base0D $colorfg --bold set -x color_virtualgo $base0D $colorfg --bold set -x color_desk $base0D $colorfg --bold + set -x color_currentos $base0B $colorfg --bold set -x color_nix $base0D $colorfg --bold case 'solarized-light' @@ -309,12 +323,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $violet $colorfg --bold set -x color_k8s $green $colorfg --bold set -x color_username $base2 $blue --bold + set -x color_root_username $base2 $red --bold set -x color_hostname $base2 $blue set -x color_rvm $red $colorfg --bold set -x color_nvm $green $colorfg --bold set -x color_virtualfish $cyan $colorfg --bold set -x color_virtualgo $cyan $colorfg --bold set -x color_desk $cyan $colorfg --bold + set -x color_currentos $green $colorfg --bold set -x color_nix $cyan $colorfg --bold case 'solarized' 'solarized-dark' @@ -358,12 +374,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $violet $colorfg --bold set -x color_k8s $green $colorfg --bold set -x color_username $base02 $blue --bold + set -x color_root_username $base2 $red --bold set -x color_hostname $base02 $blue set -x color_rvm $red $colorfg --bold set -x color_nvm $green $colorfg --bold set -x color_virtualfish $cyan $colorfg --bold set -x color_virtualgo $cyan $colorfg --bold set -x color_desk $cyan $colorfg --bold + set -x color_currentos $green $colorfg --bold set -x color_nix $cyan $colorfg --bold case 'light' @@ -400,12 +418,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $blue[1] $white --bold set -x color_k8s $green[1] $colorfg --bold set -x color_username $grey[1] $blue[3] --bold + set -x color_root_username $grey[1] $red --bold set -x color_hostname $grey[1] $blue[3] set -x color_rvm $ruby_red $grey[1] --bold set -x color_nvm $green $grey[1] --bold set -x color_virtualfish $blue[2] $grey[1] --bold set -x color_virtualgo $blue[2] $grey[1] --bold set -x color_desk $blue[2] $grey[1] --bold + set -x color_currentos $green $colorfg --bold set -x color_nix $blue[2] $grey[1] --bold case 'gruvbox' @@ -441,12 +461,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $blue[2] $fg[2] --bold set -x color_k8s $green[2] $fg[2] --bold set -x color_username $fg[3] $blue[2] --bold + set -x color_root_username $fg[3] $red --bold set -x color_hostname $fg[3] $blue[2] set -x color_rvm $red[2] $fg[2] --bold set -x color_nvm $green[1] $fg[2] --bold set -x color_virtualfish $blue[2] $fg[2] --bold set -x color_virtualgo $blue[2] $fg[2] --bold set -x color_desk $blue[2] $fg[2] --bold + set -x color_currentos $green $colorfg --bold set -x color_nix $blue[2] $fg[2] --bold case 'dracula' # https://draculatheme.com @@ -484,12 +506,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $pink $bg --bold set -x color_k8s $green $fg --bold set -x color_username $selection $cyan --bold + set -x color_root_username $selection $red --bold set -x color_hostname $selection $cyan set -x color_rvm $red $bg --bold set -x color_nvm $green $bg --bold set -x color_virtualfish $comment $bg --bold set -x color_virtualgo $cyan $bg --bold set -x color_desk $comment $bg --bold + set -x color_currentos $green $bg --bold set -x color_nix $cyan $bg --bold case 'nord' @@ -539,6 +563,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_virtualfish $base09 $colorfg --bold set -x color_virtualgo $base09 $colorfg --bold set -x color_desk $base09 $colorfg --bold + set -x color_currentos $base09 $colorfg --bold case '*' # default dark theme # light medium dark @@ -575,12 +600,14 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe set -x color_vagrant $blue[1] $white --bold set -x color_k8s $green[2] $white --bold set -x color_username $grey[1] $blue[3] --bold + set -x color_root_username $grey[1] $red[1] --bold set -x color_hostname $grey[1] $blue[3] set -x color_rvm $ruby_red $grey[1] --bold set -x color_nvm $green[1] $white --bold set -x color_virtualfish $blue[2] $grey[1] --bold set -x color_virtualgo $go_blue $black --bold set -x color_desk $blue[2] $grey[1] --bold + set -x color_currentos $green $white --bold set -x color_nix $blue[2] $grey[1] --bold end end diff --git a/functions/__bobthefish_glyphs.fish b/functions/__bobthefish_glyphs.fish index 6513368a..42491b21 100644 --- a/functions/__bobthefish_glyphs.fish +++ b/functions/__bobthefish_glyphs.fish @@ -57,6 +57,23 @@ function __bobthefish_glyphs -S -d 'Define glyphs used by bobthefish' set left_arrow_glyph '' end + set os_type_darwin 'Mac' + set os_type_synology 'Syno' + set os_type_mint 'Mint' + set os_type_suse 'Suse' + set os_type_centos 'Cent' + set os_type_fedora 'Fed' + set os_type_redhat 'RHat' + set os_type_gentoo 'Gnto' + set os_type_arch 'Arch' + set os_type_alpine 'Alp' + set os_type_ubuntu 'Ubu' + set os_type_elementary 'Elem' + set os_type_debian 'Deb' + set os_type_generic 'Lin' + set os_type_amazon 'Amz' + set os_type_coreos 'Core' + # Use prettier Nerd Fonts glyphs if [ "$theme_nerd_fonts" = "yes" ] set branch_glyph \uF418 @@ -86,6 +103,24 @@ function __bobthefish_glyphs -S -d 'Define glyphs used by bobthefish' set git_plus_glyph \uF0DE # fa-sort-asc set git_minus_glyph \uF0DD # fa-sort-desc set git_plus_minus_glyph \uF0DC # fa-sort + + set os_type_darwin '' + set os_type_synology '' + set os_type_mint '' + set os_type_suse '' + set os_type_centos '' + set os_type_fedora '' + set os_type_redhat '' + set os_type_gentoo '' + set os_type_arch '' + set os_type_alpine '' + set os_type_ubuntu '' + set os_type_elementary '' + set os_type_debian '' + set os_type_generic '' + set os_type_amazon '' + set os_type_coreos '' + end # Avoid ambiguous glyphs