dotfiles/private_dot_config/zsh/dot_zfunc/prompt_jinks_setup
Jinks e1b13231e2 Add .config/zsh/.p10k.zsh
Add .config/zsh/.zfunc/prompt_jinks_setup
Add .config/zsh/.zshrc
Add .config/zsh/.zsh_history
Add .config/zsh/.zshenv
Add .config/zsh/.p10k.zsh.zwc
2025-06-10 11:51:25 +02:00

90 lines
2.2 KiB
Bash

prompt_jinks_help () {
cat <<EOH
This prompt is color-scheme-able. You can invoke it thus:
prompt jinks [<hostname+clock-color> [<user-color> [<root-color>]]]
The default colors are green for host and green/red for user/root.
This theme works best with a dark background.
EOH
}
prompt_jinks_setup () {
GITBRANCH=`which git 2>/dev/null`
precmd () {
psvar=()
if [[ -n ${GITBRANCH} ]]; then
BRANCH=($(git branch 2>/dev/null | grep '*')); BRANCH=$BRANCH[2]
if [ $BRANCH ]; then
BRANCH="(git: $BRANCH) "
psvar[1]=$BRANCH
fi
fi
}
setopt promptsubst
local host_col=${1:-'green'}
local user_col=${2:-'green'}
local root_col=${3:-'red'}
local parens_col=blue
colors
PR_TITLEBAR=''
PR_STITLE=''
case $TERM in
xterm*|rxvt*)
PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | %y\a%}'
;;
screen)
PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | %y\e\\%}'
PR_STITLE=$'%{\ekzsh\e\\%}'
;;
*)
PR_TITLEBAR=''
;;
esac
local parens="%{$fg_bold[$parens_col]%}"
local host="%{$fg_bold[$host_col]%}"
local usr="%{$fg_bold[$user_col]%}"
local root="%{$fg_bold[$root_col]%}"
local reset="%{$reset_color%}"
local lpar="$parens($reset"
local rpar="$parens)$reset"
local lbra="$parens%\[$reset"
local rbra="$parens%\]$reset"
local clock="$lpar%{$fg_bold[$host_col]%}%T$rpar"
local userstr="%(!.$root.$usr)%n"
local hoststr="%{$fg_no_bold[yellow]%}@$host%m"
local dirstr="%{$fg_bold[cyan]%}%~"
[[ -n $SCHROOT_SESSION_ID ]] && local schroot="$lpar%{$fg_bold[red]%}${SCHROOT_SESSION_ID%%-*}$rpar"
PS2="$lpar%{$fg_bold[cyan]%}%_$rpar%{$fg_bold[yellow]%} ->$reset "
RPROMPT="(%B%(?.%{$fg_bold[green]%}%?.%{$fg_bold[red]%}%?)%b$reset)"
PROMPT="$PR_STITLE${(e)PR_TITLEBAR}$schroot$clock$lbra$userstr$hoststr$rbra$dirstr$reset %v%# "
}
prompt_jinks_preview () {
local color colors
colors=(red yellow green blue magenta)
if (( ! $#* )); then
for (( i = 1; i <= $#colors; i++ )); do
color=$colors[$i]
prompt_preview_theme jinks $color
(( i < $#colors )) && print
done
else
prompt_preview_theme jinks "$@"
fi
}
prompt_jinks_setup "$@"
# vim: ft=zsh: