You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
3.4 KiB
177 lines
3.4 KiB
5 years ago
|
# The humble beginnings of a ZSH theme. :)
|
||
|
|
||
|
sym_curved_rightarrow="\u2bab"
|
||
|
sym_zigzag="\u2b4d"
|
||
|
sym_branch="\ue0a0"
|
||
|
sym_ln="\ue0a1"
|
||
|
sym_lock="\ue0a2"
|
||
|
sym_cn="\ue0a3"
|
||
|
sym_rightarrow="\ue0b0"
|
||
|
sym_rightarrow_unfilled="\ueb1"
|
||
|
sym_leftarrow="\ue0b2"
|
||
|
sym_leftarrow_unfilled="\ueb3"
|
||
|
sym_rightcurve="\ue0b4"
|
||
|
sym_rightcurve_unfilled="\ue0b5"
|
||
|
sym_leftcurve="\ue0b6"
|
||
|
sym_leftcurve_unfilled="\ue0b7"
|
||
|
sym_downslope_bottom="\ue0b8"
|
||
|
sym_downslope_bottom_unfilled="\ue0b9"
|
||
|
sym_upslope_bottom="\ue0ba"
|
||
|
sym_upslope_bottom_unfilled="\ue0bb"
|
||
|
sym_upslope_top="\ue0bc"
|
||
|
sym_upslope_top_unfilled="\ue0bd"
|
||
|
sym_downslope_top="\ue0be"
|
||
|
sym_downslope_top_unfilled="\ue0bf"
|
||
|
sym_rightflame="\ue0c0"
|
||
|
sym_rightflame_unfilled="\ue0c1"
|
||
|
sym_leftflame="\ue0c2"
|
||
|
sym_leftflame_unfilled="\ue0c3"
|
||
|
sym_smallpixels_left="\ue0c4"
|
||
|
sym_smallpixels_right="\ue0c5"
|
||
|
sym_bigpixels_left="\ue0c6"
|
||
|
sym_bigpixels_right="\ue0c7"
|
||
|
sym_spikygraph_right="\ue0c8"
|
||
|
sym_spikygraph_left="\ue0ca"
|
||
|
sym_hexagons="\ue0cc"
|
||
|
sym_hexagons_unfilled="\ue0cd"
|
||
|
sym_lego_isoright="\ue0ce"
|
||
|
sym_lego_isoup="\ue0cf"
|
||
|
sym_lego_top="\ue0d0"
|
||
|
sym_lego_side_right="\ue0d1"
|
||
|
sym_funnel_left="\ue0d2"
|
||
|
sym_funnel_right="\ue0d4"
|
||
|
|
||
|
current_bg=0
|
||
|
|
||
5 years ago
|
function basic_prompt_char {
|
||
|
if [ $UID -eq 0 ]; then echo "#"; else echo $; fi
|
||
|
}
|
||
|
|
||
5 years ago
|
# 1 - New background color.
|
||
|
sBg() {
|
||
|
echo -n "%K{$1}"
|
||
|
current_bg=$1
|
||
|
}
|
||
|
|
||
|
eBg() {
|
||
|
echo -n "%k"
|
||
|
}
|
||
|
|
||
|
# 1 - Foreground color.
|
||
|
# 2 - Text to print.
|
||
|
p() {
|
||
|
echo -n "%F{$1}$2%f"
|
||
|
}
|
||
|
|
||
|
# 1 - New background color.
|
||
|
sep() {
|
||
|
local old_bg=$current_bg
|
||
|
echo -n " "
|
||
|
sBg $1
|
||
|
p $old_bg "${sym_rightarrow}"
|
||
|
echo -n " "
|
||
|
}
|
||
|
|
||
4 years ago
|
end_prompt() {
|
||
|
local old_bg=$current_bg
|
||
|
echo -n " "
|
||
|
eBg
|
||
|
p $old_bg "${sym_rightarrow}"
|
||
|
echo -n " "
|
||
|
}
|
||
|
|
||
5 years ago
|
is_git() {
|
||
|
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
|
||
|
echo 1
|
||
|
else
|
||
|
echo 0
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
is_root() {
|
||
|
if [[ $UID -eq 0 || $EUID -eq 0 ]]; then
|
||
|
echo 1
|
||
|
else
|
||
|
echo 0
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# 1 - Username foreground.
|
||
|
# 2 - Hostname foreground.
|
||
|
# 3 - root lightning symbol foreground.
|
||
5 years ago
|
# 4 - root hostname foreground.
|
||
5 years ago
|
seg_username() {
|
||
|
if [[ $(is_root) -gt 0 ]]; then
|
||
|
echo -n "$(p $3 ${sym_zigzag}) "
|
||
|
fi
|
||
|
|
||
|
echo -n "$(p $1 '%n')"
|
||
|
|
||
5 years ago
|
if [[ "${SSH_CLIENT}" != "" || $(is_root) -gt 0 ]]; then
|
||
|
if [[ $(is_root) -gt 0 ]]; then
|
||
|
echo -n "$(p $4 '@%m')"
|
||
|
else
|
||
|
echo -n "$(p $2 '@%m')"
|
||
|
fi
|
||
5 years ago
|
fi
|
||
|
}
|
||
|
|
||
|
# 1 - Path foreground.
|
||
|
seg_path() {
|
||
|
p $1 "%~"
|
||
|
}
|
||
|
|
||
|
# 1 - Foreground.
|
||
|
seg_git() {
|
||
|
local repo ref
|
||
|
|
||
|
repo="$(git rev-parse --git-dir 2>/dev/null)"
|
||
|
ref="${sym_branch} $(git symbolic-ref --short HEAD 2>/dev/null)" || ref="${sym_curved_rightarrow} $(git rev-parse --short HEAD 2>/dev/null)"
|
||
|
|
||
|
p $1 "${ref}"
|
||
|
|
||
|
if [[ -e "${repo}/BISECT_LOG" ]]; then
|
||
|
p $1 " (B)"
|
||
|
elif [[ -e "${repo}/MERGE_HEAD" ]]; then
|
||
|
p $1 " (M)"
|
||
|
elif [[ -e "${repo}/rebase" || -e "${repo}/rebase_apply" || -e "${repo}/rebase-merge" || -e "${repo}/../.dotest" ]]; then
|
||
|
p $1 " (R)"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# The thing that puts all the things together into one larger thing!
|
||
|
prompt() {
|
||
|
if [[ $(is_root) -gt 0 ]]; then
|
||
|
# root user/sudoer
|
||
|
sBg 52
|
||
|
else
|
||
|
# normal user
|
||
|
sBg 55
|
||
|
fi
|
||
|
echo -n ' '
|
||
5 years ago
|
seg_username 15 183 228 218
|
||
5 years ago
|
sep 18
|
||
|
seg_path 224
|
||
|
|
||
|
if [[ $(is_git) -eq 1 ]]; then
|
||
|
if [[ "$(parse_git_dirty)" != "" ]]; then
|
||
|
sep 204
|
||
|
else
|
||
|
sep 48
|
||
|
fi
|
||
|
seg_git 0
|
||
|
fi
|
||
|
|
||
4 years ago
|
end_prompt
|
||
5 years ago
|
}
|
||
|
|
||
5 years ago
|
if [[ "${TERM}" = "linux" ]]; then
|
||
|
PROMPT='%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) $(git_prompt_info)$(basic_prompt_char)%{$reset_color%} '
|
||
|
|
||
|
ZSH_THEME_GIT_PROMPT_PREFIX="("
|
||
|
ZSH_THEME_GIT_PROMPT_SUFFIX=") "
|
||
|
else
|
||
|
PROMPT='$(prompt)'
|
||
|
fi
|
||
|
|