Add ssh indicator to prompt

Signed-off-by: Aleksandar 'The Cobra' Widulski <thecobra@riseup.net>
This commit is contained in:
Aleksandar 'The Cobra' Widulski 2022-04-18 13:48:29 -04:00
parent 89e0dd41a7
commit 7f2dcac198
No known key found for this signature in database
GPG Key ID: C8F7E7CA91BCBA64
1 changed files with 31 additions and 18 deletions

49
.prompt
View File

@ -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