summaryrefslogtreecommitdiff
path: root/.zsh
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2022-08-05 17:27:53 +0300
committerSyndamia <kamen@syndamia.com>2022-08-05 17:27:53 +0300
commit0ee02fbec1feb555b3009a092c128a1edd24bc40 (patch)
tree608323d07019313c473e45fe89b89e64f7141a80 /.zsh
parentc91d299887d93d6e8940b80442bf6c2f10fe6a64 (diff)
downloaddotfiles-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.zsh98
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'