Last active
October 18, 2020 13:12
-
-
Save thijskok/48f1571da360b32937866ca7ce449184 to your computer and use it in GitHub Desktop.
mnml.zsh-theme
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# vim:ft=zsh ts=2 sw=2 sts=2 | |
# | |
# MiNiMaL | |
# A minimal prompt based on agnoster's Theme (https://gist.github.com/3712874) | |
# | |
# # Introduction | |
# | |
# MNML tries to minimize the information required shown in your prompt. | |
# | |
# - In your homedir, only a '~' is displayed. | |
# - Changing to a directory will only show the directory name. | |
# - When you become root, the prompt turns red. | |
# - When the directory is part of a Git repository, it will show the current branch in green. | |
# If the branch state is dirty, the branch name will turn orange. | |
# - When you login to a remote SSH server, it will show the username and server name. | |
# | |
# # Requirements | |
# | |
# This theme uses Powerline-patched font features: | |
# [Powerline-patched font](https://github.com/powerline/fonts). | |
# | |
CURRENT_BG='NONE' | |
SEGMENT_SEPARATOR='' | |
## huh dont need this | |
collapse_pwd() { | |
# echo $(pwd | sed -e "s,^$HOME,~,") | |
echo $(pwd | sed -e "s,^$HOME,~," | sed "s@\(.\)[^/]*/@\1/@g") | |
} | |
# Begin a segment | |
# Takes two arguments, background and foreground. Both can be omitted, | |
# rendering default background/foreground. | |
prompt_segment() { | |
local bg fg | |
[[ -n $1 && $1 != "black" ]] && bg="%K{$1}" || bg="%k" | |
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" | |
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then | |
echo -n "%{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " | |
else | |
echo -n "%{$bg%}%{$fg%} " | |
# echo $(pwd | sed -e "s,^$HOME,~," | sed "s@\(.\)[^/]*/@\1/@g") | |
# echo $(pwd | sed -e "s,^$HOME,~,") | |
fi | |
CURRENT_BG='NONE' | |
[[ -n $3 ]] && echo -n $3 | |
} | |
# End the prompt, closing any open segments | |
prompt_end() { | |
echo -n "%{%k%}" | |
echo -n "%{%f%}" | |
CURRENT_BG='' | |
} | |
### Prompt components | |
# Each component will draw itself, and hide itself if no information needs to be shown | |
# Context: user@hostname (who am I and where am I) | |
prompt_context() { | |
local user=`whoami` | |
if [[ "$user" == "root" ]]; then | |
prompt_segment red default "%F{white}%m %k%F{red}" | |
elif [[ -n "$SSH_CLIENT" ]]; then | |
prompt_segment blue default "%F{black}%n@%F{white}%m %k%F{blue}" | |
fi | |
} | |
# Git: branch/detached head, dirty status | |
prompt_git() { | |
local ref dirty | |
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then | |
ZSH_THEME_GIT_PROMPT_DIRTY='±' | |
dirty=$(parse_git_dirty) | |
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)" | |
if [[ -n $dirty ]]; then | |
prompt_segment black yellow | |
else | |
prompt_segment black green | |
fi | |
echo -n "${ref/refs\/heads\// }" | |
fi | |
} | |
# Dir: current working directory | |
prompt_dir() { | |
prompt_segment black blue '%~' | |
# echo $(pwd | sed -e "s,^$HOME,~," | sed "s@\(.\)[^/]*/@\1/@g") | |
} | |
# Status: | |
# - was there an error | |
# - am I root | |
# - are there background jobs? | |
prompt_status() { | |
local symbols | |
symbols=() | |
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" | |
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" | |
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" | |
[[ -n "$symbols" ]] && prompt_segment black default "$symbols" | |
} | |
## Main prompt | |
build_prompt() { | |
RETVAL=$? | |
prompt_context | |
prompt_dir | |
prompt_git | |
prompt_end | |
} | |
PROMPT='%{%f%b%k%}$(build_prompt) ' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment