prompt-functions (1586B)
1 # vim: ft=sh 2 _SNOWFLAKE=$(printf '\342\235\204') 3 _C_RESET=$(tput sgr0) 4 _C_1=$(tput setaf 1) 5 _C_2=$(tput setaf 7) 6 _C_3=$(tput setaf 244) 7 _C_4=$(tput setaf 2) 8 _C_6=$(tput setaf 6) 9 10 colour_part() { 11 colour_val='' 12 msg="$2" 13 delim="${3- }" 14 [ "$msg" ] || return 1 15 case $1 in 16 1) colour_val=$_C_1 ;; 17 2) colour_val=$_C_2 ;; 18 3) colour_val=$_C_3 ;; 19 4) colour_val=$_C_4 ;; 20 6) colour_val=$_C_6 ;; 21 esac 22 if [ "$BASH" ]; then 23 printf '%s ' "$msg" 24 elif [ "$ZSH_VERSION" ]; then 25 printf '%%{%s%%}%s%%{%s%%}'"${delim}" "$colour_val" "$msg" "$_C_RESET" 26 fi 27 } 28 29 _virt_prompt() { 30 if [ "$_VIRT" ]; then 31 : 32 elif [ "${JUNEST_ENV:-0}" -eq 1 ]; then 33 _VIRT=junest 34 else 35 _VIRT=$(systemd-detect-virt 2>/dev/null) 36 [ "$_VIRT" = none ] && unset _VIRT 37 fi 38 colour_part 6 "$_VIRT" 39 } 40 41 _hostname_prompt() { 42 [ "$SSH_CLIENT" ] || return 43 if ! [ "$_HOSTNAME" ]; then 44 _HOSTNAME=$(hostname) 45 _HOSTNAME="${_HOSTNAME%%.*}" 46 fi 47 colour_part 3 "$_HOSTNAME" 48 } 49 50 _devshell_prompt() { 51 [ "$IN_NIX_SHELL" ] || [ "$DEVSHELL_ROOT" ] || return 52 colour_part 6 " $_SNOWFLAKE" 53 } 54 55 _user_prompt() { 56 if ! [ "${_USER+x}" ]; then 57 user=$(id -un) 58 case $user in 59 miro) _USER='' ;; 60 *) _USER=$user ;; 61 esac 62 fi 63 colour_part 3 "${_USER:+"$_USER@"}" '' 64 } 65 66 _pwd_prompt() { 67 [ "$PWD" = "$HOME" ] && return 68 colour_part 4 "${PWD##*/}" 69 } 70 71 _get_ps1() { 72 if [ "$ZSH_VERSION" ]; then 73 prompt_ender="%(?:%%:%{${_C_1}%}%%%{${_C_RESET}%})" 74 else 75 prompt_ender=% 76 fi 77 printf '%s%s%s%s%s%s ' \ 78 "$(_devshell_prompt)" \ 79 "$(_user_prompt)" \ 80 "$(_hostname_prompt)" \ 81 "$(_pwd_prompt)" \ 82 "$(_virt_prompt)" \ 83 "$prompt_ender" 84 }