grml_prompt_setup grml
}
+function prompt_grml-chroot_setup () {
+ grml_prompt_setup grml-chroot
+}
+
function prompt_grml-large_setup () {
grml_prompt_setup grml-large
}
date '%F{blue}'
time '%F{blue}'
shell-level '%F{red}'
+ grml-chroot '%F{red}'
)
grml_prompt_post_default=(
date '%f'
time '%f'
shell-level '%f'
+ grml-chroot '%f '
)
grml_prompt_token_default=(
date '%D{%Y-%m-%d}'
time '%D{%H:%M:%S} '
shell-level '%(3L.+ .)'
+ grml-chroot 'GRML_CHROOT'
)
function grml_typeset_and_wrap () {
change-root)
grml_typeset_and_wrap $target $new '(' ')'
;;
+ grml-chroot)
+ if [[ -n ${(P)new} ]]; then
+ typeset -g "${target}=${(P)target}(CHROOT)"
+ fi
+ ;;
vcs)
v="vcs_info_msg_${new}_"
if (( ! vcscalled )); then
prompt_grml_precmd_worker
}
+function prompt_grml-chroot_precmd () {
+ emulate -L zsh
+ local grmltheme=grml-chroot
+ local -a left_items right_items
+ left_items=(grml-chroot user at host path percent)
+ right_items=()
+
+ prompt_grml_precmd_worker
+}
+
function prompt_grml-large_precmd () {
emulate -L zsh
local grmltheme=grml-large
# Since we define the required functions in here and not in files in
# $fpath, we need to stick the theme's name into `$prompt_themes'
# ourselves, since promptinit does not pick them up otherwise.
- prompt_themes+=( grml grml-large )
+ prompt_themes+=( grml grml-chroot grml-large )
# Also, keep the array sorted...
prompt_themes=( "${(@on)prompt_themes}" )
add-zsh-hook precmd battery
fi
if [[ "$TERM" == dumb ]] ; then
+ zstyle ":prompt:grml(|-large|-chroot):*:items:grml-chroot" pre ''
+ zstyle ":prompt:grml(|-large|-chroot):*:items:grml-chroot" post ' '
for i in rc user path jobs history date time shell-level; do
- zstyle ":prompt:grml(|-large):*:items:$i" pre ''
- zstyle ':prompt:grml(|-large):*:items:$i' post ''
+ zstyle ":prompt:grml(|-large|-chroot):*:items:$i" pre ''
+ zstyle ":prompt:grml(|-large|-chroot):*:items:$i" post ''
done
unset i
- zstyle ':prompt:grml:right:setup' use-rprompt false
- elif (( EUID != 0 )); then
- zstyle ':prompt:grml:*:items:user' pre '%F{red}'
+ zstyle ':prompt:grml(|-large|-chroot):right:setup' use-rprompt false
+ elif (( EUID == 0 )); then
+ zstyle ':prompt:grml(|-large|-chroot):*:items:user' pre '%F{red}'
+ fi
+
+ # Finally enable one of the prompts.
+ if [[ -n $GRML_CHROOT ]]; then
+ prompt grml-chroot
+ elif [[ $GRMLPROMPT -gt 0 ]]; then
+ prompt grml-large
+ else
+ prompt grml
fi
else
print 'Notice: no promptinit available :('
-fi
-setopt prompt_subst
+ # Support a fallback, in case promptsys isn't available.
+ setopt prompt_subst
+
+ precmd() { (( ${+functions[vcs_info]} )) && vcs_info; }
+
+ p0="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}"
+ p1="${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "'${vcs_info_msg_0_}'"%# "
+ if (( EUID == 0 )); then
+ PROMPT="${BLUE}${p0}${RED}${p1}"
+ else
+ PROMPT="${RED}${p0}${BLUE}${p1}"
+ fi
+ unset p0 p1
+fi
# make sure to use right prompt only when not running a command
is41 && setopt transient_rprompt
debian_chroot=$(cat /etc/debian_chroot)
fi
-# don't use colors on dumb terminals (like emacs):
-if [[ "$TERM" == dumb ]] ; then
- PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< "
-else
- # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended
- # prompt set variable identifying the chroot you work in (used in the
- # prompt below)
- if [[ $GRMLPROMPT -gt 0 ]] ; then
- PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
-${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
- else
- # This assembles the primary prompt string
- if (( EUID != 0 )); then
- PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
- else
- PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
- fi
- fi
-fi
-
-PROMPT="${PROMPT}"'${vcs_info_msg_0_}'"%# "
-
-# if we are inside a grml-chroot set a specific prompt theme
-if [[ -n "$GRML_CHROOT" ]] ; then
- PROMPT="%{$fg[red]%}(CHROOT) %{$fg_bold[red]%}%n%{$fg_no_bold[white]%}@%m %40<...<%B%~%b%<< %\# "
-fi
-
# 'hash' some often used directories
#d# start
hash -d deb=/var/cache/apt/archives