about summary refs log tree commit diff stats
path: root/services/zsh/zsh-prompt.sh
diff options
context:
space:
mode:
authorene <ene@sils.li>2023-02-01 21:33:11 +0100
committerene <ene@sils.li>2023-02-03 17:34:11 +0100
commit871d3f95963eac25765427ecca9a8e4812071439 (patch)
tree5dcf241ece31050cf0c74219852242abe504e068 /services/zsh/zsh-prompt.sh
parentBuild(flake): Added Flake.lock (diff)
downloadnixos-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.sh63
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