61 lines
1.5 KiB
Bash
Executable File
61 lines
1.5 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_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
|
|
[[ -n $(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="\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+=' \$ '
|
|
}
|
|
|
|
PROMPT_COMMAND=__prompt_build
|