diff options
Diffstat (limited to '')
-rw-r--r-- | hm/soispha/conf/zsh/config/zsh-prompt.zsh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/hm/soispha/conf/zsh/config/zsh-prompt.zsh b/hm/soispha/conf/zsh/config/zsh-prompt.zsh new file mode 100644 index 00000000..8f5238b2 --- /dev/null +++ b/hm/soispha/conf/zsh/config/zsh-prompt.zsh @@ -0,0 +1,64 @@ +#!/usr/bin/env zsh +_command_time_preexec() { + timer=${timer:-$SECONDS} +} + +_command_time_precmd() { + PROMPT_TMP_DIR=$(mktemp) + if [ $timer ]; then + ts=$((SECONDS - timer)) + tts=$ts + mi=0 + ho=0 + if [ $ts -ge 3 ]; then + while [ $ts -ge 60 ]; do + ts=$((ts - 60)) + mi=$((mi + 1)) + done + + while [ $mi -ge 60 ]; do + mi=$((mi - 60)) + ho=$((ho + 1)) + done + + if [ $tts -ge 3600 ]; then + out=$(printf '%dh %dm %ds\n' $ho $mi $ts) + elif [ $tts -ge 60 ]; then + out=$(printf '%dm %ds\n' $mi $ts) + elif [ $tts -lt 60 ]; then + out=$(printf '%ds\n' $ts) + fi + + export psvar[1]="took $(printf '%s ' "$out")" + echo $psvar[1] >$PROMPT_TMP_DIR + fi + + unset timer + unset ts + unset tts + unset mi + unset ho + fi +} + +_command_ro_precmd() { + if ! [ -w $(pwd) ]; then + echo " " + fi +} + +preexec_functions+=(_command_time_preexec) +precmd_functions+=(_command_time_precmd) + +blue="14" +red="9" +white="15" +setopt PROMPT_SUBST +export PROMPT='%(?.%F{$blue}.%F{$red})%B%3~%(!. %F{$red}as root %f. )%F{$white}$(if [ -n $PROMPT_TMP_DIR ];then cat $PROMPT_TMP_DIR 2>/dev/null; rm $PROMPT_TMP_DIR 2>/dev/null;fi)%f%(?.%F{$blue}.%F{$red})%F{$red}$(_command_ro_precmd)%F{$blue}❯ %b%f' +export RPROMPT='' + +#%(2V.%F{$red}%2v%f$(export psvar[2]="") .) + +# TODO:: +# Add git support +#vim:ft=zsh |