diff --git a/.prompt b/.prompt index 67882a4..f268724 100644 --- a/.prompt +++ b/.prompt @@ -33,12 +33,10 @@ __get_cmd_time() { __sig() { # Giant switch case for getting the name of the signal (`kill -l`) - local RED="\[\033[31m\]" - local WHT="\[\033[37m\]" j=0 for i in $@; do if [[ $j != 0 ]]; then - printf '%s|%s' "$WHT" "$RED" + printf '%s|%s' "$_WHT" "$_RED" fi j=$((j+1)) case $i in @@ -81,6 +79,18 @@ __sig() { done } +__ssh() { + local CON=($SSH_CONNECTION) + local SRV_IP="${CON[2]}" + [[ -z "$SRV_IP" ]] && return + local SRV_PORT="${CON[3]}" + # 4 chars from startand 4 chars from end + local SRV_IP_CUT="${_CYN}${SRV_IP}" + [[ ${#SRV_IP} -gt 8 ]] && local SRV_IP_CUT="${_CYN}${SRV_IP:0:4}${_WHT}*${_CYN}${SRV_IP: -4}" + local RET="${_GRN}${_BLU}[${SRV_IP_CUT}${_PRP}${_BLD}:${_NON}${_CYN}${SRV_PORT}${_BLU}]${_NON}" + printf '%s' "$RET" +} + __prompt() { # Get exit code local PLC=(${PIPESTATUS[@]}) @@ -112,40 +122,43 @@ __prompt() { # Set prompt sections # Colors - local NON="\[\033[0m\]" - local BLD="\[\033[1m\]" # YEP BALD - local BLK="\[\033[30m\]" - local RED="\[\033[31m\]" - local GRN="\[\033[32m\]" - local YLW="\[\033[33m\]" - local BLU="\[\033[34m\]" - local PRP="\[\033[35m\]" - local CYN="\[\033[36m\]" - local WHT="\[\033[37m\]" + _NON="\[\033[0m\]" + _BLD="\[\033[1m\]" # YEP BALD + _BLK="\[\033[30m\]" + _RED="\[\033[31m\]" + _GRN="\[\033[32m\]" + _YLW="\[\033[33m\]" + _BLU="\[\033[34m\]" + _PRP="\[\033[35m\]" + _CYN="\[\033[36m\]" + _WHT="\[\033[37m\]" # Text + # ssh detection and indicator + [[ "$SSH_CONNECTION" ]] && local SSH="$(__ssh) " + # [INT], [4], etc. for i in ${PLC[@]}; do if [[ $i > 0 ]]; then - local SIG="$(printf '%s[%s%s%s] ' "$BLU" "$RED" "$(__sig ${PLC[@]})" "$BLU")" + local SIG="$(printf '%s[%s%s%s] ' "$_BLU" "$_RED" "$(__sig ${PLC[@]})" "$_BLU")" break fi done # [user@homeserver:~] - local COL="$([[ $UID == 0 ]] && printf '%s' "$RED" || printf '%s' "$YLW")" - local UHD="${BLD}${BLU}[${COL}\u${PRP}@${CYN}\h${PRP}:${GRN}\w${BLU}]" + local COL="$([[ $UID == 0 ]] && printf '%s' "$_RED" || printf '%s' "$_YLW")" + local UHD="${_BLD}${_BLU}[${COL}\u${_PRP}@${_CYN}\h${_PRP}:${_GRN}\w${_BLU}]" # 2y 351d 12m 43s 382969μs - local TIME="${YLW}$(__get_cmd_time)" + local TIME="${_YLW}$(__get_cmd_time)" # Random colored $ or # local RAND256="\[\033[38;2;$RANDOM;$RANDOM;${RANDOM}m\]" local IND="${RAND256}\\$" # Set the prompt - PS1="${NON}${SIG}${UHD} ${TIME} ${IND} ${NON}" + PS1="${_NON}${SSH}${SIG}${UHD} ${TIME} ${IND} ${_NON}" } PROMPT_COMMAND=__prompt