diff options
author | ene <ene@sils.li> | 2023-02-01 21:33:11 +0100 |
---|---|---|
committer | ene <ene@sils.li> | 2023-02-03 17:34:11 +0100 |
commit | 871d3f95963eac25765427ecca9a8e4812071439 (patch) | |
tree | 5dcf241ece31050cf0c74219852242abe504e068 /services/zsh/zsh-prompt.sh | |
parent | Build(flake): Added Flake.lock (diff) | |
download | nixos-config-871d3f95963eac25765427ecca9a8e4812071439.tar.gz nixos-config-871d3f95963eac25765427ecca9a8e4812071439.zip |
Feat: Split the config apart
Diffstat (limited to 'services/zsh/zsh-prompt.sh')
-rw-r--r-- | services/zsh/zsh-prompt.sh | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/services/zsh/zsh-prompt.sh b/services/zsh/zsh-prompt.sh new file mode 100644 index 00000000..1f0f164b --- /dev/null +++ b/services/zsh/zsh-prompt.sh @@ -0,0 +1,63 @@ +#vim:ft=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; rm $PROMPT_TMP_DIR;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 |