diff options
| author | Akshay Nair <phenax5@gmail.com> | 2020-12-20 16:49:47 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2020-12-20 16:49:47 +0530 |
| commit | 568f7903ca7464f99df659b8488bd731e4f2c4f0 (patch) | |
| tree | dfa7f9d077eb85ec840c8bfcaa04c1d64cc5aa29 /external/zsh/theme.zsh | |
| parent | c580a9ec2a1a43a682117eca41c3867e8771117a (diff) | |
| download | nixos-config-568f7903ca7464f99df659b8488bd731e4f2c4f0.tar.gz nixos-config-568f7903ca7464f99df659b8488bd731e4f2c4f0.zip | |
Adds zsh config
Diffstat (limited to 'external/zsh/theme.zsh')
| -rw-r--r-- | external/zsh/theme.zsh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/external/zsh/theme.zsh b/external/zsh/theme.zsh new file mode 100644 index 0000000..8666a7a --- /dev/null +++ b/external/zsh/theme.zsh @@ -0,0 +1,54 @@ +setopt prompt_subst + +# Theme +COL_ACCENT=13; + +COL_DIR=$COL_ACCENT; + +COL_STATUS_ERROR=red; +COL_STATUS_BG=cyan; + +COL_GIT_DIRTY=yellow; +COL_GIT_NORMAL=green; + + +segment() { echo -n "%K{$2}%F{$3} $1 %f%k"; } +git_changes() { git status --porcelain 2> /dev/null | wc -l; } + +# Prompt dir +p_dir() { + segment "%2~" $COL_DIR white; +} + +# Prompt terminal status +p_status() { + echo -n "%(?..$(segment 'x' black $COL_STATUS_ERROR))" + echo -n "%(1j.$(segment '(jobs: %j)' black $COL_STATUS_BG).)" +} + +p_git() { + local ref dirty mode repo_path color; + + if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then + repo_path=$(git rev-parse --git-dir 2>/dev/null); + ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git rev-parse --short HEAD 2> /dev/null)"; + + changes=$(git_changes); + color=$([[ ! $changes = "0" ]] && echo $COL_GIT_DIRTY || echo $COL_GIT_NORMAL); + dirty=$([[ ! $changes = "0" ]] && echo " ($changes)"); + + segment "${ref/refs\/heads\//}$dirty" $color black; + fi +} + +prompt() { + RETVAL=$?; + p_status; + p_dir; + echo -n '$(p_git)'; + segment "$" black white; +} + +export PROMPT="$(prompt) "; +#export RPROMPT='wow' + |
