.files/.prompt

70 lines
1.8 KiB
Plaintext
Raw Normal View History

2022-03-01 17:32:57 +00:00
#!/bin/bash
# shebang for syntax highlightin purposes
export TIME_TOGGLE=0
trap '[[ $BASH_COMMAND != "$PROMPT_COMMAND" ]] && export LAST_EPOCH="$EPOCHSECONDS" && export INC_TIME=1' DEBUG
export TIME_TOGGLE=0
__get_cmd_time() {
if [ $COMMAND_TIME -ge 3600 ]; then
TZ=UTC printf 'took %(%Hh%Mm%Ss)T ' $COMMAND_TIME
elif [ $COMMAND_TIME -ge 60 ]; then
TZ=UTC printf 'took %(%Mm%Ss)T ' $COMMAND_TIME
elif [ $COMMAND_TIME -ge 1 ]; then
TZ=UTC printf 'took %(%Ss)T ' $COMMAND_TIME
fi
}
__sig() {
case $1 in
126) printf ACCES ;;
127) printf NOENT ;;
129) printf HUP ;;
130) printf INT ;;
131) printf QUIT ;;
132) printf ILL ;;
133) printf TRAP ;;
134) printf ABRT ;;
135) printf BUS ;;
136) printf FPE ;;
137) printf KILL ;;
138) printf USR1 ;;
139) printf SEGV ;;
140) printf USR2 ;;
141) printf PIPE ;;
142) printf ALRM ;;
143) printf TERM ;;
144) printf STKFLT ;;
145) printf CHLD ;;
146) printf CONT ;;
147) printf STOP ;;
148) printf TSTP ;;
149) printf TTIN ;;
150) printf TTOU ;;
151) printf URG ;;
152) printf XCPU ;;
153) printf XFSZ ;;
154) printf VTALRM ;;
155) printf PROF ;;
156) printf WINCH ;;
157) printf IO ;;
158) printf PWR ;;
159) printf SYS ;;
16[3-9]|1[7-8][0-9]|19[0-2]) printf RT$(($1-128)) ;;
*) printf $1 ;;
esac
}
__prompt() {
PEC=$?
if [ $INC_TIME -ne 0 ]; then
export PROMPT_EPOCH="$EPOCHSECONDS"
export INC_TIME=0
fi
export COMMAND_TIME="$((PROMPT_EPOCH-LAST_EPOCH))"
export PS1="$([ $PEC -ne 0 ] && printf "\[\][\[\]$(__sig $PEC)\[\]] ")\[\][\[[3\$([ $(id -u) -eq 0 ] && printf 1 || printf 3)m\]\u\[\]@\[\]\h\[\]:\[\]\w\[\]] \[\]$(__get_cmd_time)\[[38;2;\$RANDOM;\$RANDOM;\${RANDOM}m\]\\$ \[\]"
}
export PROMPT_COMMAND=__prompt