mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-02 02:19:06 +01:00
Initial upload of the a_ilgunas theme for oh-my-zsh
This commit is contained in:
parent
8c45b73918
commit
29ef36a06a
1 changed files with 172 additions and 0 deletions
172
themes/a_ilgunas.zsh-theme
Normal file
172
themes/a_ilgunas.zsh-theme
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
# a_ilgunas prompt theme
|
||||
#
|
||||
# Completeley hijacked the adam2 theme
|
||||
#
|
||||
# ... and you thought adam2 was overkill.
|
||||
|
||||
p_setup () {
|
||||
# Some can't be local
|
||||
local p_gfx_tlc p_gfx_mlc p_gfx_blc
|
||||
|
||||
# Are we a root account?
|
||||
AM_ROOT="true"
|
||||
|
||||
# Are we using a terminal that supports UTF-8 characters?
|
||||
if [[ ${LC_ALL:-${LC_CTYPE:-$LANG}} = *UTF-8* ]]; then
|
||||
UTF_TERM="true"
|
||||
else
|
||||
UTF_TERM="false"
|
||||
fi
|
||||
|
||||
if [[ $1 == '8bit' ]]; then
|
||||
shift
|
||||
if [[ $UTF_TERM == "true" ]]; then
|
||||
p_gfx_tlc=$'\xe2\x94\x8c'
|
||||
p_gfx_mlc=$'\xe2\x94\x9c'
|
||||
p_gfx_blc=$'\xe2\x94\x94'
|
||||
p_gfx_hyphen=$'\xe2\x94\x80'
|
||||
else
|
||||
p_gfx_tlc=$'\xda'
|
||||
p_gfx_mlc=$'\xc3'
|
||||
p_gfx_blc=$'\xc0'
|
||||
p_gfx_hyphen=$'\xc4'
|
||||
fi
|
||||
else
|
||||
if [[ $UTF_TERM == "true" ]]; then
|
||||
p_gfx_tlc='┌'
|
||||
else
|
||||
p_gfx_tlc='.'
|
||||
fi
|
||||
p_gfx_mlc='|'
|
||||
if [[ $UTF_TERM == "true" ]]; then
|
||||
p_gfx_blc='└'
|
||||
else
|
||||
p_gfx_blc='\`';
|
||||
fi
|
||||
p_gfx_hyphen='-'
|
||||
fi
|
||||
|
||||
# Color scheme
|
||||
if [ "$AM_ROOT" = "true" ]; then
|
||||
c_hyp=${1:-'red'} # hyphens
|
||||
c_cwd=${2:-'cyan'} # current directory
|
||||
c_usr=${3:-'cyan'} # user@host
|
||||
c_input=${4:-'green'} # user input
|
||||
c_time=${5:-'yellow'} # time
|
||||
c_prompt=${6:-'red'} # prompt
|
||||
else
|
||||
c_hyp=${1:-'cyan'} # hyphens
|
||||
c_cwd=${2:-'cyan'} # current directory
|
||||
c_usr=${3:-'cyan'} # user@host
|
||||
c_input=${4:-'green'} # user input
|
||||
c_time=${5:-'yellow'} # time
|
||||
c_prompt=${6:-'cyan'} # prompt
|
||||
fi
|
||||
|
||||
# Format the svn prompts
|
||||
if [[ $UTF_TERM == "true" ]]; then
|
||||
ZSH_THEME_SVN_PROMPT_DIRTY="%{$fg[yellow]%}✗%{$reset_color%}"
|
||||
ZSH_THEME_SVN_PROMPT_CLEAN="%{$fg[green]%}✓%{$reset_color%}"
|
||||
else
|
||||
ZSH_THEME_SVN_PROMPT_DIRTY="%{$fg[yellow]%}X%{$reset_color%}"
|
||||
ZSH_THEME_SVN_PROMPT_CLEAN="%{$fg[green]%}O%{$reset_color%}"
|
||||
fi
|
||||
|
||||
# Format the git prompts
|
||||
if [[ $UTF_TERM == "true" ]]; then
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX=" git:(%{$fg[red]%}"
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
|
||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%})%{$fg[yellow]%}✗%{$reset_color%}"
|
||||
ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%})%{$fg[green]%}✓%{$reset_color%}"
|
||||
else
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX=" git:(%{$fg[red]%}%{$reset_color%}"
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
|
||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%})%{$fg[yellow]%}X%{$reset_color%}"
|
||||
ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%})%{$fg[green]%}O%{$reset_color%}"
|
||||
fi
|
||||
|
||||
local p_gfx_bbox
|
||||
|
||||
# Not really sure what this is for, but keeping it anyway.
|
||||
p_gfx_tbox="%F{$c_hyp}${p_gfx_tlc}%F{$c_hyp}${p_gfx_hyphen}"
|
||||
p_gfx_bbox="%F{$c_hyp}${p_gfx_blc}${p_gfx_hyphen}%F{$c_hyp}"
|
||||
|
||||
# This is a cute hack. Well Adam likes it, anyway.
|
||||
p_gfx_bbox_to_mbox=$'%{\e[A\r'"%}%F{$c_hyp}${p_gfx_mlc}%F{$c_hyp}${p_gfx_hyphen}%{"$'\e[}'
|
||||
|
||||
# Format the left and right parenthesis
|
||||
p_l_paren="%B%F{black}[%b"
|
||||
p_r_paren="%B%F{black}]%b"
|
||||
|
||||
# Format the user@hostname
|
||||
p_user_host="%b%F{$c_usr}%n%B%F{$c_usr}@%b%F{$c_usr}%m"
|
||||
|
||||
# Format the time
|
||||
p_time="$p_l_paren%B%F{$c_time}%T%b$p_r_paren";
|
||||
|
||||
# The svn prompt
|
||||
p_svn='$(svn_prompt_info)'
|
||||
|
||||
# The git prompt
|
||||
p_git='$(git_prompt_info)'
|
||||
|
||||
p_line_1a="$p_gfx_tbox$p_l_paren%F{$c_cwd}%~$p_r_paren%F{$c_hyp}"
|
||||
p_line_1b="$p_l_paren$p_user_host$p_r_paren$p_time%F{$c_hyp}${p_gfx_hyphen}"
|
||||
|
||||
p_line_2="$p_gfx_bbox${p_gfx_hyphen}%F{white}${p_svn}${p_git}"
|
||||
|
||||
# Format the prompt characters (dunno.root prompt.unprivileged user prompt)
|
||||
if [[ $UTF_TERM == "true" ]]; then
|
||||
p_char="%(!.➤.➤)"
|
||||
else
|
||||
p_char="%(!.#.>)"
|
||||
fi
|
||||
|
||||
p_opts=(cr subst percent)
|
||||
|
||||
add-zsh-hook precmd p_precmd
|
||||
}
|
||||
|
||||
p_precmd() {
|
||||
setopt noxtrace localoptions extendedglob
|
||||
local p_line_1
|
||||
|
||||
p_choose_prompt
|
||||
|
||||
PS1="$p_line_1$p_newline$p_line_2 %F{$c_prompt}$p_char %f%k"
|
||||
PS2="$p_line_2$p_gfx_bbox_to_mbox%F{$c_prompt}%_> %f%k"
|
||||
PS3="$p_line_2$p_gfx_bbox_to_mbox%F{$c_prompt}?# %f%k"
|
||||
zle_highlight[(r)default:*]="default:fg=$c_input"
|
||||
|
||||
}
|
||||
|
||||
p_choose_prompt () {
|
||||
local p_line_1a_width=${#${(S%%)p_line_1a//(\%([KF1]|)\{*\}|\%[Bbkf])}}
|
||||
local p_line_1b_width=${#${(S%%)p_line_1b//(\%([KF1]|)\{*\}|\%[Bbkf])}}
|
||||
|
||||
local p_padding_size=$(( COLUMNS - p_line_1a_width + 2 - p_line_1b_width))
|
||||
|
||||
# Try to fit in long path and user@host.
|
||||
if (( p_padding_size > 0 )); then
|
||||
local p_padding
|
||||
eval "p_padding=\${(l:${p_padding_size}::${p_gfx_hyphen}:)_empty_zz}"
|
||||
p_line_1="$p_line_1a$p_padding$p_line_1b"
|
||||
return
|
||||
fi
|
||||
|
||||
p_padding_size=$(( COLUMNS - p_line_1a_width ))
|
||||
|
||||
# Didn't fit; try to fit in just long path.
|
||||
if (( p_padding_size > 0 )); then
|
||||
local p_padding
|
||||
eval "p_padding=\${(l:${p_padding_size}::${p_gfx_hyphen}:)_empty_zz}"
|
||||
p_line_1="$p_line_1a$p_padding"
|
||||
return
|
||||
fi
|
||||
|
||||
# Still didn't fit; truncate
|
||||
local p_pwd_size=$(( COLUMNS - 5 ))
|
||||
p_line_1="$p_gfx_tbox$p_l_paren%F{$c_cwd}%$p_pwd_size<...<%~%<<$p_r_paren%F{$c_hyp}$p_gfx_hyphen"
|
||||
}
|
||||
|
||||
p_setup "$@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue