Update prompt
This commit is contained in:
parent
1f0f28ba20
commit
0a09be0087
50
.prompt
50
.prompt
|
@ -1,22 +1,33 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# shebang for syntax highlightin purposes
|
# shebang for syntax highlightin purposes
|
||||||
|
|
||||||
export TIME_TOGGLE=0
|
__debug_trap() {
|
||||||
trap '[[ $BASH_COMMAND != "$PROMPT_COMMAND" ]] && export LAST_EPOCH="$EPOCHSECONDS" && export INC_TIME=1' DEBUG
|
# Set necessary pre-command variables (PROMPT_COMMAND is a command
|
||||||
|
# so its excluded here)
|
||||||
export TIME_TOGGLE=0
|
if [[ "$BASH_COMMAND" != "$PROMPT_COMMAND" ]]; then
|
||||||
|
export LAST_EPOCH="$EPOCHSECONDS"
|
||||||
__get_cmd_time() {
|
export LAST_REALTIME="$EPOCHREALTIME"
|
||||||
if [ $COMMAND_TIME -ge 3600 ]; then
|
export INC_TIME=1
|
||||||
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trap '__debug_trap' DEBUG
|
||||||
|
|
||||||
|
__get_cmd_time() {
|
||||||
|
# Set hours minutes seconds and remove preceding zeros
|
||||||
|
local HOUR=$((10#$(TZ=UTC printf '%(%H)T' $CMD_TIME)))
|
||||||
|
local MINS=$((10#$(TZ=UTC printf '%(%M)T' $CMD_TIME)))
|
||||||
|
local SECS=$((10#$(TZ=UTC printf '%(%S)T' $CMD_TIME))) #wtf sex???
|
||||||
|
|
||||||
|
# Choose whether or not to print hours minutes and seconds
|
||||||
|
[ $CMD_TIME -ge 3600 ] && TZ=UTC printf '%sh ' ${HOUR:-0}
|
||||||
|
[ $CMD_TIME -ge 60 ] && TZ=UTC printf '%sm ' ${MINS:-0}
|
||||||
|
[ $CMD_TIME -ge 1 ] && TZ=UTC printf '%ss ' ${SECS:-0}
|
||||||
|
TZ=UTC printf '%sμs ' ${CMD_US:-0}
|
||||||
|
}
|
||||||
|
|
||||||
__sig() {
|
__sig() {
|
||||||
|
# Giant switch case for getting the name of the signal (`kill -l`)
|
||||||
case $1 in
|
case $1 in
|
||||||
126) printf ACCES ;;
|
126) printf ACCES ;;
|
||||||
127) printf NOENT ;;
|
127) printf NOENT ;;
|
||||||
|
@ -51,18 +62,27 @@ __sig() {
|
||||||
157) printf IO ;;
|
157) printf IO ;;
|
||||||
158) printf PWR ;;
|
158) printf PWR ;;
|
||||||
159) printf SYS ;;
|
159) printf SYS ;;
|
||||||
16[3-9]|1[7-8][0-9]|19[0-2]) printf RT$(($1-128)) ;;
|
16[3-9]|1[7-8][0-9]|19[0-2]) printf RT$(($1-128)) ;; # Savagery
|
||||||
*) printf $1 ;;
|
*) printf $1 ;; # Print exit code if not in list
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
__prompt() {
|
__prompt() {
|
||||||
|
# Get exit code
|
||||||
PEC=$?
|
PEC=$?
|
||||||
|
# Reset time when prompt was first displayed after command
|
||||||
if [ $INC_TIME -ne 0 ]; then
|
if [ $INC_TIME -ne 0 ]; then
|
||||||
export PROMPT_EPOCH="$EPOCHSECONDS"
|
export PROMPT_EPOCH="$EPOCHSECONDS"
|
||||||
|
export PROMPT_REALTIME="$EPOCHREALTIME"
|
||||||
export INC_TIME=0
|
export INC_TIME=0
|
||||||
fi
|
fi
|
||||||
export COMMAND_TIME="$((PROMPT_EPOCH-LAST_EPOCH))"
|
|
||||||
|
# Get relative times
|
||||||
|
export CMD_TIME="$((PROMPT_EPOCH-LAST_EPOCH))"
|
||||||
|
export CMD_US="$((1${PROMPT_REALTIME: -6}-$((10#${LAST_REALTIME: -6}))))"
|
||||||
|
export CMD_US="$((10#${CMD_US: -6}))"
|
||||||
|
|
||||||
|
# Set the prompt
|
||||||
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 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\]"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue