about summary refs log tree commit diff stats
path: root/hm/soispha/conf/zsh/config/zsh-prompt.zsh
blob: 8f5238b237c437806ca60e808b6a1c48dbbcccc5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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