mirror of
https://github.com/JaKooLit/Debian-Hyprland.git
synced 2025-12-21 18:20:13 +01:00
393 lines
12 KiB
Bash
393 lines
12 KiB
Bash
|
|
###
|
|
### You can re-define the following variables in your .zshrc file
|
|
### in order to customize the appearance of the prompt
|
|
###
|
|
|
|
# The indentation of the rprompt
|
|
ZLE_RPROMPT_INDENT=${ZLE_RPROMPT_INDENT:-0}
|
|
|
|
# Whether to use oh-my-zsh's git-prompt plugin
|
|
# or the builtin logic written in this file
|
|
ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT=""
|
|
|
|
# Whether to gather additional details about the git status
|
|
# This option only applies when using the builtin logic
|
|
# Usefull when dealing with huge repositories to speed things up
|
|
ZSH_ANTARES_USE_LIGHT_GIT_MODE=""
|
|
|
|
# The colors to use for the various elements of the prompt
|
|
ZSH_ANTARES_FG_EXECTIME="#dd00ff"
|
|
ZSH_ANTARES_FG_ERRVAL="#c31a1a"
|
|
ZSH_ANTARES_FG_DECO="#ffffff"
|
|
ZSH_ANTARES_FG_PWD_OK="#ffffff"
|
|
ZSH_ANTARES_BG_PWD_OK="#0055ff"
|
|
ZSH_ANTARES_FG_PWD_ERR="#ffffff"
|
|
ZSH_ANTARES_BG_PWD_ERR="#c31a1a"
|
|
ZSH_ANTARES_FG_GIT_INIT="#000000"
|
|
ZSH_ANTARES_BG_GIT_INIT="#b5f3a1"
|
|
ZSH_ANTARES_FG_GIT_BARE="#000000"
|
|
ZSH_ANTARES_BG_GIT_BARE="#b07a4e"
|
|
ZSH_ANTARES_FG_GIT_BRANCH="#000000"
|
|
ZSH_ANTARES_BG_GIT_BRANCH="#47cc2b"
|
|
ZSH_ANTARES_FG_GIT_DETACH="#000000"
|
|
ZSH_ANTARES_BG_GIT_DETACH="#eeaa22"
|
|
ZSH_ANTARES_FG_GIT_CONFLICT="#000000"
|
|
ZSH_ANTARES_BG_GIT_CONFLICT="#c31a1a"
|
|
ZSH_ANTARES_FG_GIT_AHEAD="#cfcfcf"
|
|
ZSH_ANTARES_FG_GIT_BEHIND="#9f9f9f"
|
|
ZSH_ANTARES_FG_GIT_STAGED="#6cc6ee"
|
|
ZSH_ANTARES_FG_GIT_ADDED="#04c304"
|
|
ZSH_ANTARES_FG_GIT_DELETED="#e7165a"
|
|
ZSH_ANTARES_FG_GIT_CHANGED="#ee9931"
|
|
ZSH_ANTARES_FG_GIT_CONFLICTS="#ff0000"
|
|
ZSH_ANTARES_FG_GIT_UNTRACKED="#bbffff"
|
|
ZSH_ANTARES_FG_GIT_STASHED="#eaa0ff"
|
|
ZSH_ANTARES_FG_GIT_TAG="#ffffff"
|
|
ZSH_ANTARES_FG_JOBS="#9f9f9f"
|
|
ZSH_ANTARES_FG_PRIVILEDGES="#ffdd44"
|
|
|
|
# The characters (or strings, by will) to use for some of the elements
|
|
ZSH_ANTARES_STR_GIT_BARE="⛁"
|
|
ZSH_ANTARES_STR_GIT_AHEAD="↑"
|
|
ZSH_ANTARES_STR_GIT_BEHIND="↓"
|
|
ZSH_ANTARES_STR_GIT_STAGED="●"
|
|
ZSH_ANTARES_STR_GIT_ADDED="✚"
|
|
ZSH_ANTARES_STR_GIT_DELETED="━"
|
|
ZSH_ANTARES_STR_GIT_CHANGED="✱"
|
|
ZSH_ANTARES_STR_GIT_CONFLICTS="✖"
|
|
ZSH_ANTARES_STR_GIT_UNTRACKED="❍"
|
|
ZSH_ANTARES_STR_GIT_STASHED="⚑"
|
|
ZSH_ANTARES_STR_GIT_TAG="🏲"
|
|
ZSH_ANTARES_STR_JOBS="⚙"
|
|
ZSH_ANTARES_STR_ROOT="#"
|
|
ZSH_ANTARES_STR_USER="$"
|
|
|
|
# The path expansion to use to display the pwd
|
|
ZSH_ANTARES_PATHVAR='%~'
|
|
|
|
# The minimum amount of time (in seconds) a command shall take to complete
|
|
# in order to display the execution time in the prompt
|
|
ZSH_ANTARES_MIN_EXEC_TIME=0
|
|
|
|
# The control character used to insert a new line
|
|
# You shouldn't edit this variable, but if you really want to...
|
|
ZSH_ANTARES_LINEFEED=$'\n'
|
|
|
|
###
|
|
### End of the re-definable section
|
|
###
|
|
|
|
|
|
antares_update_git_status()
|
|
{
|
|
ZSH_ANTARES_GIT_STATUS=""
|
|
ZSH_ANTARES_GIT_IN_WORKING_TREE=0
|
|
ZSH_ANTARES_GIT_IS_INIT_REPO=0
|
|
ZSH_ANTARES_GIT_IS_BARE_REPO=0
|
|
ZSH_ANTARES_GIT_IS_DETACHED_HEAD=0
|
|
ZSH_ANTARES_GIT_HAS_CONFLICTS=0
|
|
ZSH_ANTARES_GIT_HAS_TAGS=0
|
|
ZSH_ANTARES_GIT_TAG=""
|
|
|
|
if ( $(git rev-parse --is-inside-work-tree 1>/dev/null 2>/dev/null) )
|
|
then
|
|
ZSH_ANTARES_GIT_IN_WORKING_TREE=1
|
|
private branch_name="$(git branch --show-current)"
|
|
if [ -n "$branch_name" ]
|
|
then
|
|
if [ -z "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
|
|
then
|
|
GIT_BRANCH="$branch_name"
|
|
fi
|
|
if ( ! $(git rev-parse --verify HEAD 1>/dev/null 2>/dev/null) )
|
|
then
|
|
ZSH_ANTARES_GIT_IS_INIT_REPO=1
|
|
fi
|
|
if [ $(git rev-parse --is-bare-repository) = "true" ]
|
|
then
|
|
ZSH_ANTARES_GIT_IS_BARE_REPO=1
|
|
GIT_BRANCH="$ZSH_ANTARES_STR_GIT_BARE"
|
|
fi
|
|
else
|
|
ZSH_ANTARES_GIT_IS_DETACHED_HEAD=1
|
|
if [ -z "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
|
|
then
|
|
GIT_BRANCH="$(git rev-parse --short HEAD)"
|
|
if [ -z "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ]
|
|
then
|
|
private git_tag="$(git tag --points-at=HEAD)"
|
|
if [ -n "$git_tag" ]
|
|
then
|
|
ZSH_ANTARES_GIT_HAS_TAGS=1
|
|
private n_tags="$(echo "$git_tag" | wc -l)"
|
|
if (( n_tags == 1 ))
|
|
then
|
|
ZSH_ANTARES_GIT_TAG=" $ZSH_ANTARES_STR_GIT_TAG $git_tag"
|
|
elif (( n_tags > 1 ))
|
|
then
|
|
ZSH_ANTARES_GIT_TAG=" $ZSH_ANTARES_STR_GIT_TAG $n_tags"
|
|
else
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
else
|
|
antares_reset_git_info
|
|
return
|
|
fi
|
|
|
|
if (( ZSH_ANTARES_GIT_IS_BARE_REPO ))
|
|
then
|
|
antares_reset_git_counts
|
|
GIT_AHEAD=$(git rev-list --left-only HEAD..FETCH_HEAD --count)
|
|
GIT_BEHIND=$(git rev-list --right-only HEAD..FETCH_HEAD --count)
|
|
return
|
|
fi
|
|
|
|
if [ -n "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
|
|
then
|
|
GIT_ADDED=0
|
|
elif [ -n "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ]
|
|
then
|
|
antares_reset_git_counts
|
|
return
|
|
else
|
|
private git_status="$(git status -sb)"
|
|
if [ -n "$git_status" ]
|
|
then
|
|
GIT_STAGED=$(echo $git_status | grep '^[AMD]. ' | wc -l)
|
|
GIT_ADDED=$(echo $git_status | grep '^A ' | wc -l)
|
|
GIT_DELETED=$(echo $git_status | grep -E '^(D |.D) ' | wc -l)
|
|
GIT_CHANGED=$(echo $git_status | grep -E '^(M |.M) ' | wc -l)
|
|
GIT_CONFLICTS=$(echo $git_status | grep '^U. ' | wc -l)
|
|
GIT_UNTRACKED=$(echo $git_status | grep '^?? ' | wc -l)
|
|
GIT_STASHED=$(git stash list | wc -l)
|
|
if (( ZSH_ANTARES_GIT_IS_DETACHED_HEAD ))
|
|
then
|
|
GIT_AHEAD=0
|
|
GIT_BEHIND=0
|
|
elif (( ! ZSH_ANTARES_GIT_IS_INIT_REPO ))
|
|
then
|
|
private left_right=$(echo $git_status | grep '^## ' | cut -d" " -f2)
|
|
GIT_AHEAD=$(git rev-list --left-only $left_right --count)
|
|
GIT_BEHIND=$(git rev-list --right-only $left_right --count)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
ZSH_ANTARES_GIT_HAS_CONFLICTS=$(( GIT_CONFLICTS > 0 ))
|
|
}
|
|
|
|
antares_reset_git_info()
|
|
{
|
|
if [ -z "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
|
|
then
|
|
GIT_BRANCH=""
|
|
fi
|
|
antares_reset_git_counts
|
|
}
|
|
antares_reset_git_counts()
|
|
{
|
|
if [ -n "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
|
|
then
|
|
GIT_ADDED=0
|
|
else
|
|
GIT_AHEAD=0
|
|
GIT_BEHIND=0
|
|
GIT_STAGED=0
|
|
GIT_ADDED=0
|
|
GIT_DELETED=0
|
|
GIT_CHANGED=0
|
|
GIT_CONFLICTS=0
|
|
GIT_UNTRACKED=0
|
|
GIT_STASHED=0
|
|
fi
|
|
}
|
|
|
|
antares_update_prompt()
|
|
{
|
|
ZSH_ANTARES_RETURN=""
|
|
if [ -n "$ZSH_ANTARES_EXEC_FLAG" ]
|
|
then
|
|
if (( ZSH_ANTARES_MIN_EXEC_TIME >= 0 ))
|
|
then
|
|
private exec_time=$(( SECONDS - ZSH_ANTARES_EXEC_START ))
|
|
if (( exec_time >= ZSH_ANTARES_MIN_EXEC_TIME ))
|
|
then
|
|
ZSH_ANTARES_RETURN+="%F{$ZSH_ANTARES_FG_EXECTIME}%B⤷%b $exec_time%f"
|
|
fi
|
|
fi
|
|
if [[ "$ZSH_ANTARES_ERR_CODE" != "0" ]]
|
|
then
|
|
if [ -z "$ZSH_ANTARES_RETURN" ]
|
|
then
|
|
ZSH_ANTARES_RETURN+="%F{$ZSH_ANTARES_FG_ERRVAL}%B⤷%b%f"
|
|
fi
|
|
ZSH_ANTARES_RETURN+=" %F{$ZSH_ANTARES_FG_ERRVAL}✘%B${ZSH_ANTARES_ERR_CODE}%b%f"
|
|
fi
|
|
[ -n "$ZSH_ANTARES_RETURN" ] && ZSH_ANTARES_RETURN+="$ZSH_ANTARES_LINEFEED"
|
|
fi
|
|
|
|
ZSH_ANTARES_FILLER=""
|
|
private fillchar=" "
|
|
|
|
private width=$(( COLUMNS - ${ZLE_RPROMPT_INDENT:-1} ))
|
|
|
|
private decosize=7
|
|
private pwdsize=${#${(%):-$ZSH_ANTARES_PATHVAR}}
|
|
private pwdcut=""
|
|
private gitsize=${#${(%):-$GIT_BRANCH$ZSH_ANTARES_GIT_TAG}}
|
|
private gitcut=""
|
|
|
|
if (( pwdsize + gitsize + (decosize * 2) > width )); then
|
|
private half_width=$(( width / 2 ))
|
|
private pwd_over_half=$(( (pwdsize + decosize) > half_width ))
|
|
private git_over_half=$(( (gitsize + decosize) > half_width ))
|
|
if (( pwd_over_half > 0 )) && (( git_over_half > 0 ))
|
|
then
|
|
(( pwdcut = half_width - decosize ))
|
|
(( gitcut = half_width - decosize ))
|
|
elif (( pwd_over_half > 0 ))
|
|
then
|
|
(( pwdcut = width - gitsize - (decosize * 2) ))
|
|
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdcut - gitsize - (decosize * 2) ))::$fillchar:)}"
|
|
elif (( git_over_half > 0 ))
|
|
then
|
|
(( gitcut = width - pwdsize - (decosize * 2) ))
|
|
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdsize - gitcut - (decosize * 2) ))::$fillchar:)}"
|
|
else
|
|
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdsize - gitsize - (decosize * 2) ))::$fillchar:)}"
|
|
fi
|
|
else
|
|
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdsize - gitsize - (decosize * 2) ))::$fillchar:)}"
|
|
fi
|
|
|
|
if [ -n "$ZSH_ANTARES_EXEC_FLAG" ]
|
|
then
|
|
private pwd_fg_color="%(?.${ZSH_ANTARES_FG_PWD_OK}.${ZSH_ANTARES_FG_PWD_ERR})"
|
|
private pwd_bg_color="%(?.${ZSH_ANTARES_BG_PWD_OK}.${ZSH_ANTARES_BG_PWD_ERR})"
|
|
else
|
|
private pwd_fg_color="$ZSH_ANTARES_FG_PWD_OK"
|
|
private pwd_bg_color="$ZSH_ANTARES_BG_PWD_OK"
|
|
fi
|
|
ZSH_ANTARES_PWD="%K{$pwd_bg_color}%F{$pwd_fg_color} %${pwdcut}<...<${ZSH_ANTARES_PATHVAR}%<< %f%k%F{$pwd_bg_color}▓▒░%f"
|
|
|
|
ZSH_ANTARES_GIT_BRANCH=""
|
|
if (( ZSH_ANTARES_GIT_IN_WORKING_TREE ))
|
|
then
|
|
if (( ZSH_ANTARES_GIT_HAS_CONFLICTS ))
|
|
then
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_CONFLICT}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_CONFLICT}%F{$ZSH_ANTARES_FG_GIT_CONFLICT}"
|
|
elif (( ZSH_ANTARES_GIT_IS_DETACHED_HEAD ))
|
|
then
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_DETACH}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_DETACH}%F{$ZSH_ANTARES_FG_GIT_DETACH}"
|
|
if (( ZSH_ANTARES_GIT_HAS_TAGS ))
|
|
then
|
|
GIT_BRANCH+="%F{$ZSH_ANTARES_FG_GIT_TAG}${ZSH_ANTARES_GIT_TAG}%f"
|
|
fi
|
|
elif (( ZSH_ANTARES_GIT_IS_BARE_REPO ))
|
|
then
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_BARE}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_BARE}%F{$ZSH_ANTARES_FG_GIT_BARE}"
|
|
elif (( ZSH_ANTARES_GIT_IS_INIT_REPO ))
|
|
then
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_INIT}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_INIT}%F{$ZSH_ANTARES_FG_GIT_INIT}"
|
|
else
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_BRANCH}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_BRANCH}%F{$ZSH_ANTARES_FG_GIT_BRANCH}"
|
|
fi
|
|
ZSH_ANTARES_GIT_BRANCH+=" %${gitcut}>...>$GIT_BRANCH%>> %f%k"
|
|
if [ -n "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ]
|
|
then
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_FG_DECO}├╼%f"
|
|
else
|
|
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_FG_DECO}├╮%f"
|
|
fi
|
|
fi
|
|
|
|
ZSH_ANTARES_JOBS="%(1j.%F{$ZSH_ANTARES_FG_JOBS}${ZSH_ANTARES_STR_JOBS}%j%f .)"
|
|
|
|
ZSH_ANTARES_PRIVILEDGES="%F{$ZSH_ANTARES_FG_PRIVILEDGES}%B%(!.${ZSH_ANTARES_STR_ROOT}.${ZSH_ANTARES_STR_USER})%b%f"
|
|
}
|
|
|
|
antares_update_rprompt()
|
|
{
|
|
ZSH_ANTARES_GIT_STATUS=""
|
|
|
|
[ -n "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ] && return
|
|
|
|
(( ZSH_ANTARES_GIT_IN_WORKING_TREE )) || return
|
|
|
|
if (( GIT_CONFLICTS > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_CONFLICTS}${ZSH_ANTARES_STR_GIT_CONFLICTS}${GIT_CONFLICTS}%f"
|
|
fi
|
|
if (( GIT_STAGED > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_STAGED}${ZSH_ANTARES_STR_GIT_STAGED}${GIT_STAGED}%f"
|
|
fi
|
|
if (( GIT_DELETED > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_DELETED}${ZSH_ANTARES_STR_GIT_DELETED}${GIT_DELETED}%f"
|
|
fi
|
|
if (( GIT_CHANGED > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_CHANGED}${ZSH_ANTARES_STR_GIT_CHANGED}${GIT_CHANGED}%f"
|
|
fi
|
|
if (( GIT_ADDED > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_ADDED}${ZSH_ANTARES_STR_GIT_ADDED}${GIT_ADDED}%f"
|
|
fi
|
|
if (( GIT_UNTRACKED > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_UNTRACKED}${ZSH_ANTARES_STR_GIT_UNTRACKED}${GIT_UNTRACKED}%f"
|
|
fi
|
|
if (( GIT_STASHED > 0 ))
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_STASHED}${ZSH_ANTARES_STR_GIT_STASHED}${GIT_STASHED}%f"
|
|
fi
|
|
if (( ! ZSH_ANTARES_GIT_IS_DETACHED_HEAD ))
|
|
then
|
|
private ahead_behind=""
|
|
if (( GIT_AHEAD > 0 ))
|
|
then
|
|
ahead_behind+="%F{$ZSH_ANTARES_FG_GIT_AHEAD}${ZSH_ANTARES_STR_GIT_AHEAD}${GIT_AHEAD}%f"
|
|
fi
|
|
if (( GIT_BEHIND > 0 ))
|
|
then
|
|
ahead_behind+="%F{$ZSH_ANTARES_FG_GIT_BEHIND}${ZSH_ANTARES_STR_GIT_BEHIND}${GIT_BEHIND}%f"
|
|
fi
|
|
if [ -n "$ahead_behind" ]
|
|
then
|
|
ZSH_ANTARES_GIT_STATUS+=" $ahead_behind"
|
|
fi
|
|
fi
|
|
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_DECO}╾─╯%f"
|
|
}
|
|
|
|
antares_precmd()
|
|
{
|
|
ZSH_ANTARES_ERR_CODE="$?"
|
|
antares_update_git_status
|
|
antares_update_prompt
|
|
antares_update_rprompt
|
|
ZSH_ANTARES_EXEC_FLAG=""
|
|
}
|
|
|
|
antares_preexec()
|
|
{
|
|
ZSH_ANTARES_EXEC_FLAG="+"
|
|
ZSH_ANTARES_EXEC_START=$SECONDS
|
|
}
|
|
|
|
autoload -U add-zsh-hook
|
|
add-zsh-hook precmd antares_precmd
|
|
add-zsh-hook preexec antares_preexec
|
|
|
|
PROMPT='${ZSH_ANTARES_RETURN}\
|
|
%F{$ZSH_ANTARES_FG_DECO}╭┤%f${ZSH_ANTARES_PWD}${(e)ZSH_ANTARES_FILLER}${ZSH_ANTARES_GIT_BRANCH}
|
|
%F{$ZSH_ANTARES_FG_DECO}╰─╼%f ${ZSH_ANTARES_JOBS}${ZSH_ANTARES_PRIVILEDGES} '
|
|
|
|
RPROMPT='${ZSH_ANTARES_GIT_STATUS}'
|
|
|