Very prompt
Signed-off-by: Aleksandar 'The Cobra' Widulski <thecobra@riseup.net>
This commit is contained in:
parent
a7d441da71
commit
0b48a81b2a
143
.prompt
143
.prompt
|
@ -4,10 +4,11 @@
|
||||||
__debug_trap() {
|
__debug_trap() {
|
||||||
# Set necessary pre-command variables (PROMPT_COMMAND is a
|
# Set necessary pre-command variables (PROMPT_COMMAND is a
|
||||||
# command so its excluded here)
|
# command so its excluded here)
|
||||||
if [[ "$BASH_COMMAND" != "$PROMPT_COMMAND" &&
|
if [[ "$BASH_COMMAND" != "$PROMPT_COMMAND" ]]; then
|
||||||
"$LAST_BASH_COMMAND" == "$PROMPT_COMMAND" ]]; then
|
if [[ "$LAST_BASH_COMMAND" == "$PROMPT_COMMAND" ]]; then
|
||||||
LAST_RT="$EPOCHREALTIME"
|
LAST_RT="$EPOCHREALTIME"
|
||||||
INC_TIME=1
|
INC_TIME=1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
LAST_BASH_COMMAND="$BASH_COMMAND"
|
LAST_BASH_COMMAND="$BASH_COMMAND"
|
||||||
}
|
}
|
||||||
|
@ -16,72 +17,86 @@ trap '__debug_trap' DEBUG
|
||||||
|
|
||||||
__get_cmd_time() {
|
__get_cmd_time() {
|
||||||
# Set hours minutes seconds and remove preceding zeros
|
# Set hours minutes seconds and remove preceding zeros
|
||||||
TZ=UTC
|
local YEAR=$((10#0$(($(TZ=UTC printf '%(%Y)T' $CMD_TIME)))-1970))
|
||||||
local YEAR=$(($((10#$(printf '%(%Y)T' $CMD_TIME)))-1970))
|
local DAYS=$((10#$(TZ=UTC printf '%(%j)T' $CMD_TIME)))
|
||||||
local DAYS=$((10#$(printf '%(%j)T' $CMD_TIME)))
|
local HOUR=$((10#$(TZ=UTC printf '%(%H)T' $CMD_TIME)))
|
||||||
local HOUR=$((10#$(printf '%(%H)T' $CMD_TIME)))
|
local MINS=$((10#$(TZ=UTC printf '%(%M)T' $CMD_TIME)))
|
||||||
local MINS=$((10#$(printf '%(%M)T' $CMD_TIME)))
|
local SECS=$((10#$(TZ=UTC printf '%(%S)T' $CMD_TIME)))
|
||||||
local SECS=$((10#$(printf '%(%S)T' $CMD_TIME))) #wtf sex???
|
|
||||||
|
|
||||||
# Choose whether or not to print hours minutes and seconds
|
# Choose whether or not to print hours minutes and seconds
|
||||||
[ $CMD_TIME -ge 31536000 ] && printf '%sd ' ${YEAR:-0}
|
[[ $CMD_TIME -ge 31536000 ]] && printf '%sy ' ${YEAR:-0}
|
||||||
[ $CMD_TIME -ge 86400 ] && printf '%sd ' ${DAYS:-0}
|
[[ $CMD_TIME -ge 86400 ]] && printf '%sd ' ${DAYS:-0}
|
||||||
[ $CMD_TIME -ge 3600 ] && printf '%sh ' ${HOUR:-0}
|
[[ $CMD_TIME -ge 3600 ]] && printf '%sh ' ${HOUR:-0}
|
||||||
[ $CMD_TIME -ge 60 ] && printf '%sm ' ${MINS:-0}
|
[[ $CMD_TIME -ge 60 ]] && printf '%sm ' ${MINS:-0}
|
||||||
[ $CMD_TIME -ge 1 ] && printf '%ss ' ${SECS:-0}
|
[[ $CMD_TIME -ge 1 ]] && printf '%ss ' ${SECS:-0}
|
||||||
printf '%sμs' ${CMD_US:-0}
|
printf '%sμs' ${CMD_US:-0}
|
||||||
}
|
}
|
||||||
|
|
||||||
__sig() {
|
__sig() {
|
||||||
# Giant switch case for getting the name of the signal (`kill -l`)
|
# Giant switch case for getting the name of the signal (`kill -l`)
|
||||||
case $1 in
|
local RED="\[\033[31m\]"
|
||||||
126) printf ACCES ;;
|
local WHT="\[\033[37m\]"
|
||||||
127) printf NOENT ;;
|
j=0
|
||||||
129) printf HUP ;;
|
for i in $@; do
|
||||||
130) printf INT ;;
|
if [[ $j != 0 ]]; then
|
||||||
131) printf QUIT ;;
|
printf '%s' "$WHT"
|
||||||
132) printf ILL ;;
|
[[ $(eval echo \${$((j+1))}) == ";"
|
||||||
133) printf TRAP ;;
|
|| $(eval echo \${$((j-1))}) == ";" ]] &&
|
||||||
134) printf ABRT ;;
|
printf ";" ||
|
||||||
135) printf BUS ;;
|
printf "|"
|
||||||
136) printf FPE ;;
|
printf '%s' "$RED"
|
||||||
137) printf KILL ;;
|
fi
|
||||||
138) printf USR1 ;;
|
j=$((j+1))
|
||||||
139) printf SEGV ;;
|
case $i in
|
||||||
140) printf USR2 ;;
|
126) printf ACCES ;;
|
||||||
141) printf PIPE ;;
|
127) printf NOENT ;;
|
||||||
142) printf ALRM ;;
|
129) printf HUP ;;
|
||||||
143) printf TERM ;;
|
130) printf INT ;;
|
||||||
144) printf STKFLT ;;
|
131) printf QUIT ;;
|
||||||
145) printf CHLD ;;
|
132) printf ILL ;;
|
||||||
146) printf CONT ;;
|
133) printf TRAP ;;
|
||||||
147) printf STOP ;;
|
134) printf ABRT ;;
|
||||||
148) printf TSTP ;;
|
135) printf BUS ;;
|
||||||
149) printf TTIN ;;
|
136) printf FPE ;;
|
||||||
150) printf TTOU ;;
|
137) printf KILL ;;
|
||||||
151) printf URG ;;
|
138) printf USR1 ;;
|
||||||
152) printf XCPU ;;
|
139) printf SEGV ;;
|
||||||
153) printf XFSZ ;;
|
140) printf USR2 ;;
|
||||||
154) printf VTALRM ;;
|
141) printf PIPE ;;
|
||||||
155) printf PROF ;;
|
142) printf ALRM ;;
|
||||||
156) printf WINCH ;;
|
143) printf TERM ;;
|
||||||
157) printf IO ;;
|
144) printf STKFLT ;;
|
||||||
158) printf PWR ;;
|
145) printf CHLD ;;
|
||||||
159) printf SYS ;;
|
146) printf CONT ;;
|
||||||
16[3-9]|1[7-8][0-9]|19[0-2]) printf RT$(($1-128)) ;; # Savagery
|
147) printf STOP ;;
|
||||||
*) printf $1 ;; # Print exit code if not in list
|
148) printf TSTP ;;
|
||||||
esac
|
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)) ;; # Savagery
|
||||||
|
*) printf $i ;; # Print exit code if not in list
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
__prompt() {
|
__prompt() {
|
||||||
# Get exit code
|
# Get exit code
|
||||||
local PEC=${?:-0}
|
local PLC=(${PIPESTATUS[@]})
|
||||||
|
|
||||||
# LAST_RT is not set before a command is run
|
# *_RT may not be set
|
||||||
LAST_RT="${LAST_RT:-$EPOCHREALTIME}"
|
LAST_RT="${LAST_RT:-$EPOCHREALTIME}"
|
||||||
|
PROMPT_RT="${PROMPT_RT:-$EPOCHREALTIME}"
|
||||||
|
|
||||||
# Reset time when prompt was first displayed after command
|
# Reset time when prompt was first displayed after command
|
||||||
if [ ${INC_TIME:-1} -ne 0 ]; then
|
if [[ ${INC_TIME:-1} != 0 ]]; then
|
||||||
PROMPT_RT="$EPOCHREALTIME"
|
PROMPT_RT="$EPOCHREALTIME"
|
||||||
INC_TIME=0
|
INC_TIME=0
|
||||||
fi
|
fi
|
||||||
|
@ -89,8 +104,9 @@ __prompt() {
|
||||||
# Get relative times
|
# Get relative times
|
||||||
|
|
||||||
# Remove decimal point, simulating multiplying by 1 million
|
# Remove decimal point, simulating multiplying by 1 million
|
||||||
PROMPT_RT1M="${PROMPT_RT%.*}${PROMPT_RT#*.}"
|
local PROMPT_RT1M="${PROMPT_RT%.*}${PROMPT_RT#*.}"
|
||||||
LAST_RT1M="${LAST_RT%.*}${LAST_RT#*.}"
|
local LAST_RT1M="${LAST_RT%.*}${LAST_RT#*.}"
|
||||||
|
|
||||||
# Subtract and divide by 1 million to get a more accurate difference
|
# Subtract and divide by 1 million to get a more accurate difference
|
||||||
CMD_TIME="$(((PROMPT_RT1M-LAST_RT1M)/1000000))"
|
CMD_TIME="$(((PROMPT_RT1M-LAST_RT1M)/1000000))"
|
||||||
CMD_TIME="${CMD_TIME:-0}"
|
CMD_TIME="${CMD_TIME:-0}"
|
||||||
|
@ -101,7 +117,7 @@ __prompt() {
|
||||||
local PROMPT_US_CLN="$((10#$PROMPT_US))"
|
local PROMPT_US_CLN="$((10#$PROMPT_US))"
|
||||||
local PROMPT_US_CLN="${PROMPT_US_CLN:-0}"
|
local PROMPT_US_CLN="${PROMPT_US_CLN:-0}"
|
||||||
|
|
||||||
[ $PROMPT_US_CLN -lt $LAST_US ] &&
|
[[ $PROMPT_US_CLN < $LAST_US ]] &&
|
||||||
CMD_US="$((1$PROMPT_US-$LAST_US))" ||
|
CMD_US="$((1$PROMPT_US-$LAST_US))" ||
|
||||||
CMD_US="$(($PROMPT_US_CLN-$LAST_US))"
|
CMD_US="$(($PROMPT_US_CLN-$LAST_US))"
|
||||||
CMD_US="$((10#$CMD_US))"
|
CMD_US="$((10#$CMD_US))"
|
||||||
|
@ -123,10 +139,15 @@ __prompt() {
|
||||||
# Text
|
# Text
|
||||||
|
|
||||||
# [INT], [4], etc.
|
# [INT], [4], etc.
|
||||||
local SIG="$([ $PEC -ne 0 ] && printf '%s[%s%s%s] ' "$BLU" "$RED" "$(__sig $PEC)" "$BLU")"
|
for i in ${PLC[@]}; do
|
||||||
|
if [[ $i > 0 ]]; then
|
||||||
|
local SIG="$(printf '%s[%s%s%s] ' "$BLU" "$RED" "$(__sig ${PLC[@]})" "$BLU")"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# [user@homeserver:~]
|
# [user@homeserver:~]
|
||||||
local COL="$([ $UID -eq 0 ] && printf %s "$RED" || printf %s "$YLW")"
|
local COL="$([[ $UID == 0 ]] && printf %s "$RED" || printf %s "$YLW")"
|
||||||
local UHD="$BLD$BLU[$COL\u$PRP@$CYN\h$PRP:$GRN\w$BLU]"
|
local UHD="$BLD$BLU[$COL\u$PRP@$CYN\h$PRP:$GRN\w$BLU]"
|
||||||
|
|
||||||
# 2y 351d 12m 43s 382969μs
|
# 2y 351d 12m 43s 382969μs
|
||||||
|
|
Loading…
Reference in New Issue