50 lines
1.3 KiB
Bash
50 lines
1.3 KiB
Bash
# Del tema bullet-train
|
|
BULLETTRAIN_EXEC_TIME_ELAPSED="5"
|
|
BULLETTRAIN_EXEC_TIME_BG="yellow"
|
|
BULLETTRAIN_EXEC_TIME_FG="black"
|
|
|
|
preexec() {
|
|
cmd_timestamp=`date +%s`
|
|
}
|
|
|
|
precmd() {
|
|
local stop=`date +%s`
|
|
local start=${cmd_timestamp:-$stop}
|
|
let BULLETTRAIN_last_exec_duration=$stop-$start
|
|
cmd_timestamp=''
|
|
}
|
|
|
|
prompt_cmd_exec_time() {
|
|
[ $BULLETTRAIN_last_exec_duration -gt $BULLETTRAIN_EXEC_TIME_ELAPSED ] && prompt_segment $BULLETTRAIN_EXEC_TIME_BG $BULLETTRAIN_EXEC_TIME_FG "$(displaytime $BULLETTRAIN_last_exec_duration)"
|
|
}
|
|
|
|
# Based on http://stackoverflow.com/a/32164707/3859566
|
|
function displaytime {
|
|
local T=$1
|
|
local D=$((T/60/60/24))
|
|
local H=$((T/60/60%24))
|
|
local M=$((T/60%60))
|
|
local S=$((T%60))
|
|
[[ $D > 0 ]] && printf '%dd' $D
|
|
[[ $H > 0 ]] && printf '%dh' $H
|
|
[[ $M > 0 ]] && printf '%dm' $M
|
|
printf '%ds' $S
|
|
}
|
|
|
|
# Begin a segment
|
|
# Takes three arguments, background, foreground and text. All of them can be omitted,
|
|
# rendering default background/foreground and no text.
|
|
prompt_segment() {
|
|
local bg fg
|
|
SEGMENT_SEPARATOR=''
|
|
CURRENT_BG='NONE'
|
|
|
|
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
|
|
[[ -n $2 ]] && fg="%F{$2}" || fg="%f"
|
|
echo -n "%{%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} "
|
|
CURRENT_BG=$1
|
|
[[ -n $3 ]] && echo -n $3
|
|
}
|
|
|
|
POWERLEVEL9K_CUSTOM_EXEC_TIME="prompt_cmd_exec_time"
|