Now, right prompt can be totally disabled in powerline multiline theme

- New env var (THEME_PROMPT_USERINFO_MODE) to choose "user info" mode:

    Possible values:

        default: same behaviour as before
        sudo: only show a "hint" when sudo credentials are cached

    any other values disables this segment.
pull/601/head
Eduardo Bellido Bellido 2015-10-28 00:43:33 +00:00
parent 62613907f1
commit 56c6e3ecd3
1 changed files with 36 additions and 14 deletions

View File

@ -42,6 +42,8 @@ BATTERY_STATUS_THEME_PROMPT_CRITICAL_COLOR=160
THEME_PROMPT_CLOCK_FORMAT=${THEME_PROMPT_CLOCK_FORMAT:="%H:%M:%S"} THEME_PROMPT_CLOCK_FORMAT=${THEME_PROMPT_CLOCK_FORMAT:="%H:%M:%S"}
THEME_PROMPT_USERINFO_MODE=${THEME_PROMPT_USERINFO_MODE:="default"}
IN_VIM_PROMPT_COLOR=35 IN_VIM_PROMPT_COLOR=35
IN_VIM_PROMPT_TEXT="vim" IN_VIM_PROMPT_TEXT="vim"
@ -58,11 +60,13 @@ function set_rgb_color {
} }
function powerline_shell_prompt { function powerline_shell_prompt {
SHELL_PROMPT=""
SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR} SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR}
if sudo -n uptime 2>&1 | grep -q "load"; then if sudo -n uptime 2>&1 | grep -q "load"; then
SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR_SUDO} SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR_SUDO}
fi fi
SEGMENT_AT_RIGHT=0 case "${THEME_PROMPT_USERINFO_MODE}" in
"default")
if [[ -n "${SSH_CLIENT}" ]]; then if [[ -n "${SSH_CLIENT}" ]]; then
SHELL_PROMPT="${SHELL_SSH_CHAR}${USER}@${HOSTNAME}" SHELL_PROMPT="${SHELL_SSH_CHAR}${USER}@${HOSTNAME}"
else else
@ -72,6 +76,17 @@ function powerline_shell_prompt {
SHELL_PROMPT="$(set_rgb_color - ${SHELL_PROMPT_COLOR}) ${SHELL_PROMPT} ${normal}" SHELL_PROMPT="$(set_rgb_color - ${SHELL_PROMPT_COLOR}) ${SHELL_PROMPT} ${normal}"
LAST_THEME_COLOR=${SHELL_PROMPT_COLOR} LAST_THEME_COLOR=${SHELL_PROMPT_COLOR}
(( SEGMENT_AT_RIGHT += 1 )) (( SEGMENT_AT_RIGHT += 1 ))
;;
"sudo")
if [[ "${SHELL_PROMPT_COLOR}" == "${SHELL_THEME_PROMPT_COLOR_SUDO}" ]]; then
SHELL_PROMPT="!"
RIGHT_PROMPT_LENGTH=$(( ${RIGHT_PROMPT_LENGTH} + ${#SHELL_PROMPT} + 2 ))
SHELL_PROMPT="$(set_rgb_color - ${SHELL_PROMPT_COLOR}) ${SHELL_PROMPT} ${normal}"
LAST_THEME_COLOR=${SHELL_PROMPT_COLOR}
(( SEGMENT_AT_RIGHT += 1 ))
fi
;;
esac
} }
function powerline_rvm_prompt { function powerline_rvm_prompt {
@ -188,6 +203,8 @@ function powerline_battery_status_prompt {
if [[ "${SEGMENT_AT_RIGHT}" -gt 0 ]]; then if [[ "${SEGMENT_AT_RIGHT}" -gt 0 ]]; then
BATTERY_PROMPT+=$(set_rgb_color ${LAST_THEME_COLOR} ${BATTERY_STATUS_THEME_PROMPT_COLOR})${THEME_PROMPT_LEFT_SEPARATOR}${normal} BATTERY_PROMPT+=$(set_rgb_color ${LAST_THEME_COLOR} ${BATTERY_STATUS_THEME_PROMPT_COLOR})${THEME_PROMPT_LEFT_SEPARATOR}${normal}
(( RIGHT_PROMPT_LENGTH += SEGMENT_AT_RIGHT )) (( RIGHT_PROMPT_LENGTH += SEGMENT_AT_RIGHT ))
else
BATTERY_STATUS+=" "
fi fi
RIGHT_PROMPT_LENGTH=$(( ${RIGHT_PROMPT_LENGTH} + ${#BATTERY_STATUS} + 2 )) RIGHT_PROMPT_LENGTH=$(( ${RIGHT_PROMPT_LENGTH} + ${#BATTERY_STATUS} + 2 ))
LAST_THEME_COLOR=${BATTERY_STATUS_THEME_PROMPT_COLOR} LAST_THEME_COLOR=${BATTERY_STATUS_THEME_PROMPT_COLOR}
@ -214,7 +231,10 @@ function powerline_in_vim_prompt {
function powerline_prompt_command() { function powerline_prompt_command() {
local LAST_STATUS="$?" local LAST_STATUS="$?"
local MOVE_CURSOR_RIGHTMOST='\033[500C' local MOVE_CURSOR_RIGHTMOST='\033[500C'
SEGMENT_AT_LEFT=0
SEGMENT_AT_RIGHT=0
RIGHT_PROMPT_LENGTH=1 RIGHT_PROMPT_LENGTH=1
RIGHT_PROMPT=""
## left prompt ## ## left prompt ##
powerline_scm_prompt powerline_scm_prompt
@ -232,10 +252,12 @@ function powerline_prompt_command() {
powerline_clock_prompt powerline_clock_prompt
powerline_in_vim_prompt powerline_in_vim_prompt
if [[ "${SEGMENT_AT_RIGHT}" -gt 0 ]]; then
LEFT_PROMPT+="${MOVE_CURSOR_RIGHTMOST}"
[[ "${SEGMENT_AT_RIGHT}" -eq 1 ]] && (( RIGHT_PROMPT_LENGTH-=1 )) [[ "${SEGMENT_AT_RIGHT}" -eq 1 ]] && (( RIGHT_PROMPT_LENGTH-=1 ))
RIGHT_PROMPT="\033[${RIGHT_PROMPT_LENGTH}D$(set_rgb_color ${LAST_THEME_COLOR} -)${THEME_PROMPT_LEFT_SEPARATOR}${normal}" RIGHT_PROMPT="\033[${RIGHT_PROMPT_LENGTH}D$(set_rgb_color ${LAST_THEME_COLOR} -)${THEME_PROMPT_LEFT_SEPARATOR}${normal}"
RIGHT_PROMPT+="${IN_VIM_PROMPT}${CLOCK_PROMPT}${BATTERY_PROMPT}${SHELL_PROMPT}${normal}" RIGHT_PROMPT+="${IN_VIM_PROMPT}${CLOCK_PROMPT}${BATTERY_PROMPT}${SHELL_PROMPT}${normal}"
fi
PS1="${LEFT_PROMPT}${RIGHT_PROMPT}\n${LAST_STATUS_PROMPT}${PROMPT_CHAR} " PS1="${LEFT_PROMPT}${RIGHT_PROMPT}\n${LAST_STATUS_PROMPT}${PROMPT_CHAR} "
} }