diff options
| author | Syndamia <kamen@syndamia.com> | 2022-08-05 17:27:53 +0300 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2022-08-05 17:27:53 +0300 |
| commit | 0ee02fbec1feb555b3009a092c128a1edd24bc40 (patch) | |
| tree | 608323d07019313c473e45fe89b89e64f7141a80 /.zsh | |
| parent | c91d299887d93d6e8940b80442bf6c2f10fe6a64 (diff) | |
| download | dotfiles-0ee02fbec1feb555b3009a092c128a1edd24bc40.tar dotfiles-0ee02fbec1feb555b3009a092c128a1edd24bc40.tar.gz dotfiles-0ee02fbec1feb555b3009a092c128a1edd24bc40.zip | |
Created homelander and for now made it the theme of choice
Diffstat (limited to '.zsh')
| -rw-r--r-- | .zsh/homelander.zsh | 98 |
1 files changed, 95 insertions, 3 deletions
diff --git a/.zsh/homelander.zsh b/.zsh/homelander.zsh index f2a3dc1..25c9b52 100644 --- a/.zsh/homelander.zsh +++ b/.zsh/homelander.zsh @@ -1,4 +1,96 @@ -precmd() { - print ">" +HL_PRECMD_LEFT=' ' +HL_PRECMD_RIGHT='' +HL_USER_LEFT='' +HL_USER_RIGHT='' +HL_CLOCK_LEFT='' +HL_CLOCK_RIGHT='' +HL_REPO='' +HL_PUSH='↑' +HL_PULL='↓' +HL_CHANGES='' +HL_PRECURSOR='' + +HL_PROMPT_FG=223 +HL_PROMPT_BG=0 +HL_USER_FG=223 +HL_USER_BG=66 +HL_USER_NOPERMS=160 +HL_CLOCK_FG=214 +HL_CLOCK_BG=0 + +hl_colored_echo_def() { + hl_colored_echo $HL_PROMPT_FG $HL_PROMPT_BG $1 } -export PROMPT=" " + +hl_colored_echo() { + echo -en "%F{$1}%K{$2}$3%k%f" +} + +hl_user() { + hl_colored_echo $HL_USER_BG $HL_PROMPT_BG $HL_USER_LEFT + + __user="$USER" + [ ! -w . ] && hl_colored_echo $HL_USER_NOPERMS $HL_USER_BG $__user \ + || hl_colored_echo $HL_USER_FG $HL_USER_BG $__user + + hl_colored_echo $HL_USER_BG $HL_PROMPT_BG $HL_USER_RIGHT +} + +hl_time() { + hl_colored_echo $HL_CLOCK_FG $HL_CLOCK_BG "$HL_CLOCK_LEFT$(date +%R)$HL_CLOCK_RIGHT" +} + +hl_precursor() { + __body=$HL_PRECURSOR + if git rev-parse --git-dir > /dev/null 2>&1; then + __gitstatus="$(git status -uno)" + if echo $__gitstatus | grep -q 'behind' > /dev/null 2>&1; then + __body=$HL_PULL + elif echo $__gitstatus | grep -q 'ahead' > /dev/null 2>&1; then + __body=$HL_PUSH + elif echo $__gitstatus | grep -q 'changes' > /dev/null 2>&1; then + __body=$HL_CHANGES + else + __body=$HL_REPO + fi + fi + + echo -en "$__body" +} + +# user 12:45 > +# user - white on blue - on machine +# - white on green - ssh +# - red on * - no write permissions +# precursor - > - default +# - - git repo +# - ↑ - unpushed changes +# - ↓ - unpulled changes +# - - unstaged changes +# - colored red - no write permissions + +hl_precmd() { + __exitcode="$?" + + if [ "$_print_directory" -ne 0 ] || [ "$__exitcode" -ne 0 ]; then + [ "$__exitcode" -ne 0 ] && hl_colored_echo $HL_USER_NOPERMS $HL_PROMPT_BG $HL_PRECMD_LEFT \ + || hl_colored_echo $HL_USER_BG $HL_PROMPT_BG $HL_PRECMD_LEFT + + [ "$__exitcode" -ne 0 ] && hl_colored_echo $HL_PROMPT_FG $HL_USER_NOPERMS " $__exitcode " + [ "$_print_directory" -ne 0 ] && hl_colored_echo $HL_USER_FG $HL_USER_BG " $PWD" + + [ "$_print_directory" -ne 0 ] && hl_colored_echo $HL_USER_BG $HL_PROMPT_BG "$HL_PRECMD_RIGHT\n" \ + || hl_colored_echo $HL_USER_NOPERMS $HL_PROMPT_BG "$HL_PRECMD_RIGHT\n" + fi +} + +chpwd() { + _print_directory=1 +} + +preexec() { + _print_directory=0 +} + +setopt prompt_subst +export PROMPT='$(hl_precmd)%F{$HL_PROMPT_FG}$(hl_user) $(hl_time) $(hl_precursor) %f' |
