Originally based on daivasmara/external-zsh-theme.
Originally based on daivasmara/external-zsh-theme.
| MODE_INDICATOR="%F{135}❮%F{212}❮❮%f" # Lavender deep + pink fuchsia | |
| local return_status="%F{203}%(?..⏎)%f " | |
| ZSH_THEME_GIT_PROMPT_PREFIX="%F{222}|" | |
| ZSH_THEME_GIT_PROMPT_SUFFIX="%f" | |
| ZSH_THEME_GIT_PROMPT_DIRTY="%F{203} ⚡%f" | |
| ZSH_THEME_GIT_PROMPT_AHEAD="%F{221} ↑%f" | |
| ZSH_THEME_GIT_PROMPT_CLEAN="%F{121} ✓%f" | |
| ZSH_THEME_GIT_PROMPT_ADDED="%F{121} ✚" | |
| ZSH_THEME_GIT_PROMPT_MODIFIED="%F{212} ✹" | |
| ZSH_THEME_GIT_PROMPT_DELETED="%F{203} ✖" | |
| ZSH_THEME_GIT_PROMPT_RENAMED="%F{135} ➜" | |
| ZSH_THEME_GIT_PROMPT_UNMERGED="%F{222} ═" | |
| ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{212} ✭" | |
| ZSH_THEME_GIT_PROMPT_SHA_BEFORE="◯ %F{212}" | |
| ZSH_THEME_GIT_PROMPT_SHA_AFTER="%f" | |
| function prompt_char() { | |
| echo "%F{135}❯%F{212}❯%f" | |
| } | |
| ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%F{121}" | |
| ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%F{222}" | |
| ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%F{203}" | |
| ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%F{246}" | |
| function git_time_since_commit() { | |
| if git rev-parse --git-dir > /dev/null 2>&1; then | |
| if [[ $(git log 2>&1 > /dev/null | grep -c "^fatal: bad default revision") == 0 ]]; then | |
| last_commit=`git log --pretty=format:'%at' -1 2> /dev/null` | |
| now=`date +%s` | |
| seconds_since_last_commit=$((now-last_commit)) | |
| MINUTES=$((seconds_since_last_commit / 60)) | |
| HOURS=$((seconds_since_last_commit / 3600)) | |
| DAYS=$((seconds_since_last_commit / 86400)) | |
| SUB_HOURS=$((HOURS % 24)) | |
| SUB_MINUTES=$((MINUTES % 60)) | |
| if [[ -n $(git status -s 2> /dev/null) ]]; then | |
| if [ "$MINUTES" -gt 30 ]; then | |
| COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" | |
| elif [ "$MINUTES" -gt 10 ]; then | |
| COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" | |
| else | |
| COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" | |
| fi | |
| else | |
| COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" | |
| fi | |
| if [ "$HOURS" -gt 24 ]; then | |
| echo "[$COLOR${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}]" | |
| elif [ "$MINUTES" -gt 60 ]; then | |
| echo "[$COLOR${HOURS}h${SUB_MINUTES}m%{$reset_color%}]" | |
| else | |
| echo "[$COLOR${MINUTES}m%{$reset_color%}]" | |
| fi | |
| else | |
| COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" | |
| echo "[$COLOR~%{$reset_color%}]" | |
| fi | |
| fi | |
| } | |
| PROMPT=' | |
| %F{212}%m%f %F{246}[%f$(whoami)%F{246}]%f %F{135}%(5~|%-1~/…/%3~|%4~)%f $(git_prompt_short_sha)$(git_prompt_info) | |
| $(prompt_char) ' | |
| RPROMPT='${return_status}$(git_time_since_commit)$(git_prompt_status)%f' |