about summary refs log tree commit diff stats
path: root/home-manager/zsh/config/zsh-prompt.sh
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/zsh/config/zsh-prompt.sh')
-rw-r--r--home-manager/zsh/config/zsh-prompt.sh63
1 files changed, 63 insertions, 0 deletions
diff --git a/home-manager/zsh/config/zsh-prompt.sh b/home-manager/zsh/config/zsh-prompt.sh
new file mode 100644
index 00000000..1f0f164b
--- /dev/null
+++ b/home-manager/zsh/config/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