aboutsummaryrefslogtreecommitdiff
path: root/external/zsh/theme.zsh
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2020-12-20 16:49:47 +0530
committerAkshay Nair <phenax5@gmail.com>2020-12-20 16:49:47 +0530
commit568f7903ca7464f99df659b8488bd731e4f2c4f0 (patch)
treedfa7f9d077eb85ec840c8bfcaa04c1d64cc5aa29 /external/zsh/theme.zsh
parentc580a9ec2a1a43a682117eca41c3867e8771117a (diff)
downloadnixos-config-568f7903ca7464f99df659b8488bd731e4f2c4f0.tar.gz
nixos-config-568f7903ca7464f99df659b8488bd731e4f2c4f0.zip
Adds zsh config
Diffstat (limited to 'external/zsh/theme.zsh')
-rw-r--r--external/zsh/theme.zsh54
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'
+