70 lines
1.8 KiB
Bash
70 lines
1.8 KiB
Bash
#!/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 "\[[34m\][\[[31m\]$(__sig $PEC)\[[34m\]] ")\[[1m[34m\][\[[3\$([ $(id -u) -eq 0 ] && printf 1 || printf 3)m\]\u\[[35m\]@\[[36m\]\h\[[35m\]:\[[32m\]\w\[[34m\]] \[[33m\]$(__get_cmd_time)\[[38;2;\$RANDOM;\$RANDOM;\${RANDOM}m\]\\$ \[[0m\]"
|
||
}
|
||
|
||
export PROMPT_COMMAND=__prompt
|