view .shell.d/99.prompt.zsh @ 325:64e73453e43f

xmonad: Pull apart custom layout into something readable This change doesn't affect any behavior, but it does document the custom layout by naming function parameters. Hopefully, this will make things easier to fix the next time the XMonad developers break us.
author Lucas Bergman <lucas@bergmans.us>
date Tue, 11 Mar 2014 12:49:05 -0500
parents 02b635053e8f
children 0ceb8554801e
line wrap: on
line source

# Magic prompt with colors
# username in blue if not root
# username in red if root - time in pink w/
# DANGER replacing the date
# failed jobs print exit status in the RPS1 with yellow text
setopt prompt_subst

preexec () {
        currJob="`echo $3 | cut -d ' ' -f 1 | head -n 1`"
        if [[ "$TERM" == "screen" ]]; then
                hostUser="%10<...<%~%<<"
                print -Pn "\ek[$hostUser $currJob]\e\\"
        else
                if [[ "$FANCYTYPE" == "YES" ]]; then
                        hostUser="%n@%m: %2~"
                        print -Pn "\e]0;$hostUser [$currJob]\a"
                fi
        fi
}

function right_side_prompt() {
    branch=`vcs_current_branch`
    if [ $? = 0 ] ; then
        echo -n $branch
    else
        date '+%D %H:%M'
    fi
}

function precmd () {
    rps_branch=`right_side_prompt`
}

if [ "x`whoami`" = "xroot" ] ; then
        PS1=$'%{\e];%n@%m: %2~ [zsh]\a%}[%m:%3~] %{\e[31m%}%n%{\e[0m%}%# '
        if [[ "$TERM" == "screen" ]] ; then
                PS1=$'%{\ek[%2~ zsh]\e\\%}[%m:%3~] %{\e[31m%}%n%{\e[0m%}%# '
        fi
        RPS1=$'%{\e[1;35m%}[DANGER %t]%{\e[0m%}%(?..%{\e[1;33m%} %?%{\e[1;0m%})'
else
        PS1=$'%{\e];%n@%m: %2~ [zsh]\a%}[%m:%3~] %{\e[34m%}%n%{\e[0m%}%# '
        if [[ "$TERM" == "screen" ]]; then
                PS1=$'%{\ek[%2~ zsh]\e\\%}[%m:%3~] %{\e[34m%}%n%{\e[0m%}%# '
        fi
    RPS1=$'[$rps_branch]%(?..%{\e[1;33m%} %?%{\e[0m%})'
fi


export FANCYTYPE="NO"

for ok in rxvt rxvt-unicode xterm xterm-256color xterm-color screen ; do
    if [ "$TERM" = "$ok" ] ; then
        export FANCYTYPE="YES"
    fi
done

if [ $FANCYTYPE = "NO" ] ; then
    prompt='[%m:%3~] %n%# '
    RPS1=$'[%W %t]'
fi

if [[ $TERM == "dumb" ]]; then  # in emacs
    # for tramp to not hang, need the following. cf:
    # http://www.emacswiki.org/emacs/TrampMode
    unsetopt zle
    unsetopt prompt_cr
    unsetopt prompt_subst
    unfunction precmd
    unfunction preexec
fi


#nonfancy no-frills prompt - disabled (same as the "non-fancy" one above)
#prompt='[%m:%3~] %n%# '
#RPS1=$'[%W %t]'