#!/usr/bin/env bash # Defaults (override in .env) PROMPT_ICON="" PROMPT_HOST_COLOR="255;255;255" PROMPT_DIR_COLOR="100;149;237" PROMPT_VPN_NAME="" PROMPT_VPN_COLOR="255;255;255" PROMPT_HIGHLIGHTED_BRANCH_COLOR="255;84;84" _prompt_dir="${BASH_SOURCE[0]%/*}" [[ -f "$_prompt_dir/.env" ]] && . "$_prompt_dir/.env" __prompt_git() { local color local color_reset local branch color="" color_reset="" branch=$(git branch --show-current 2>/dev/null) || return [[ -z $branch ]] && return if [[ $branch =~ main|master ]] && [[ -n $PROMPT_HIGHLIGHTED_BRANCH_COLOR ]]; then color="\[\e[38;2;${PROMPT_HIGHLIGHTED_BRANCH_COLOR}m\]" color_reset="\[\e[0m\]" fi echo -n " (${color}${branch}${color_reset})" } __prompt_vpn() { [[ -z $PROMPT_VPN_NAME ]] && return [[ -z $(nmcli -f GENERAL.STATE con show "$PROMPT_VPN_NAME") ]] && return echo -n " → \[\e[38;2;${PROMPT_VPN_COLOR}m\]${PROMPT_VPN_NAME}\[\e[0m\]" } __prompt_icon() { [[ -z $PROMPT_ICON ]] && return echo -n " ${PROMPT_ICON}" } __prompt_build() { local white='\[\e[37m\]' local reset='\[\e[0m\]' local host_color="\[\e[38;2;${PROMPT_HOST_COLOR}m\]" local dir_color="\[\e[38;2;${PROMPT_DIR_COLOR}m\]" PS1="\n" PS1+="${white}[${reset}" PS1+="${host_color}\u@\h${r}" PS1+="$(__prompt_vpn)" PS1+="${white}:${reset}" PS1+="${dir_color}${PWD}${reset}" PS1+="${white}]${reset}" PS1+="$(__prompt_icon)" PS1+="$(__prompt_git)" PS1+=' \$ ' } case ";${PROMPT_COMMAND-};" in *";__prompt_build;"*) ;; *) if [[ -n ${PROMPT_COMMAND-} ]]; then PROMPT_COMMAND="${PROMPT_COMMAND}; __prompt_build" else PROMPT_COMMAND=__prompt_build fi ;; esac