58 lines
1.3 KiB
Bash
58 lines
1.3 KiB
Bash
# powerline prompt
|
||
# requires: aifont (MesloLGS NF + ai/syui icons)
|
||
|
||
_has_aifont() {
|
||
[[ -f "$HOME/Library/Fonts/aifont.ttf" ]] || [[ -f "$HOME/.local/share/fonts/aifont.ttf" ]]
|
||
}
|
||
|
||
_powerline_git() {
|
||
local branch=$(git symbolic-ref --short HEAD 2>/dev/null) || return
|
||
local dirty=""
|
||
[[ -n $(git status --porcelain 2>/dev/null) ]] && dirty="*"
|
||
echo "${branch}${dirty}"
|
||
}
|
||
|
||
_powerline_icon() {
|
||
case "$USER" in
|
||
syui) echo $'\ue002' ;;
|
||
ai) echo $'\ue001' ;;
|
||
*) echo "❯" ;;
|
||
esac
|
||
}
|
||
|
||
_powerline_prompt() {
|
||
local icon=$(_powerline_icon)
|
||
local sep=$'\ue0b0'
|
||
local dir="${PWD/#$HOME/~}"
|
||
local git=$(_powerline_git)
|
||
|
||
local prompt=""
|
||
local icon_color="yellow"
|
||
[[ -n "$SSH_CONNECTION" ]] && icon_color="cyan"
|
||
if [[ -n "$icon" ]]; then
|
||
prompt+="%F{${icon_color}}%K{black} ${icon} %k%f"
|
||
prompt+="%F{black}%K{234}${sep}%f"
|
||
else
|
||
prompt+="%F{234}${sep}%f"
|
||
fi
|
||
prompt+="%F{yellow}%K{234} $USER %k%f"
|
||
prompt+="%F{234}%K{236}${sep}%f"
|
||
prompt+="%F{white}%K{236} ${dir} %k%f"
|
||
|
||
if [[ -n "$git" ]]; then
|
||
prompt+="%F{236}%K{234}${sep}%f"
|
||
prompt+="%F{cyan}%K{234} ${git} %k%f"
|
||
prompt+="%F{234}${sep}%f"
|
||
else
|
||
prompt+="%F{236}${sep}%f"
|
||
fi
|
||
prompt+="%k%f "
|
||
|
||
echo "$prompt"
|
||
}
|
||
|
||
if _has_aifont; then
|
||
setopt PROMPT_SUBST
|
||
PROMPT='$(_powerline_prompt)'
|
||
fi
|