Files
bash-prompt/prompt.sh
T

49 lines
1.1 KiB
Bash
Executable File

#!/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_dir="${BASH_SOURCE[0]%/*}"
[[ -f "$_prompt_dir/.env" ]] && . "$_prompt_dir/.env"
__prompt_git() {
local branch
branch=$(git branch --show-current 2>/dev/null) || return
[[ -z $branch ]] && return
echo -n " (${branch})"
}
__prompt_vpn() {
[[ -z $PROMPT_VPN_NAME ]] && return
nmcli -f GENERAL.STATE con show "$PROMPT_VPN_NAME" &>/dev/null || 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="${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+=' \$ '
}
PROMPT_COMMAND=__prompt_build