dotfiles/shell/zsh_custom_themes/custom.zsh

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"