From 9693b39da6ea10475083b1c106c58b3989f7f84d Mon Sep 17 00:00:00 2001 From: jitakirin Date: Thu, 21 May 2015 21:12:18 +0100 Subject: [PATCH 1/4] Port sudo indicator to powerline theme This ports sudo indicator feature to powerline theme, originally added to powerline-multiline theme in PR #452. --- themes/powerline/powerline.theme.bash | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/themes/powerline/powerline.theme.bash b/themes/powerline/powerline.theme.bash index 1bc4eca9..4e7320cb 100644 --- a/themes/powerline/powerline.theme.bash +++ b/themes/powerline/powerline.theme.bash @@ -4,7 +4,7 @@ THEME_PROMPT_SEPARATOR="" SHELL_SSH_CHAR=" " SHELL_THEME_PROMPT_COLOR=32 -SHELL_SSH_THEME_PROMPT_COLOR=208 +SHELL_THEME_PROMPT_COLOR_SUDO=202 VIRTUALENV_CHAR="ⓔ " VIRTUALENV_THEME_PROMPT_COLOR=35 @@ -37,13 +37,17 @@ function set_rgb_color { } function powerline_shell_prompt { - if [[ -n "${SSH_CLIENT}" ]]; then - SHELL_PROMPT="${bold_white}$(set_rgb_color - ${SHELL_SSH_THEME_PROMPT_COLOR}) ${SHELL_SSH_CHAR}\u@\h ${normal}" - LAST_THEME_COLOR=${SHELL_SSH_THEME_PROMPT_COLOR} - else - SHELL_PROMPT="${bold_white}$(set_rgb_color - ${SHELL_THEME_PROMPT_COLOR}) \u ${normal}" - LAST_THEME_COLOR=${SHELL_THEME_PROMPT_COLOR} + SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR} + if sudo -n true &>/dev/null; then + SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR_SUDO} fi + if [[ -n "${SSH_CLIENT}" ]]; then + SHELL_PROMPT="${SHELL_SSH_CHAR}\u@\h" + else + SHELL_PROMPT="\u" + fi + SHELL_PROMPT="${bold_white}$(set_rgb_color - ${SHELL_PROMPT_COLOR}) ${SHELL_PROMPT} ${normal}" + LAST_THEME_COLOR=${SHELL_PROMPT_COLOR} } function powerline_virtualenv_prompt { From 473b3f2075917843ed1ef741ca272d6a680a4637 Mon Sep 17 00:00:00 2001 From: jitakirin Date: Fri, 22 May 2015 08:43:34 +0100 Subject: [PATCH 2/4] Abuse uptime to check if sudo requires password The ``sudo -n true`` trick doesn't work on OS X. --- themes/powerline/powerline.theme.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/powerline/powerline.theme.bash b/themes/powerline/powerline.theme.bash index 4e7320cb..cb90b2e0 100644 --- a/themes/powerline/powerline.theme.bash +++ b/themes/powerline/powerline.theme.bash @@ -38,7 +38,7 @@ function set_rgb_color { function powerline_shell_prompt { SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR} - if sudo -n true &>/dev/null; then + if sudo -n uptime 2>&1 |grep -q "load"; then SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR_SUDO} fi if [[ -n "${SSH_CLIENT}" ]]; then From b8649312e44f5b38fb121387ea786d9f2537bfd7 Mon Sep 17 00:00:00 2001 From: jitakirin Date: Fri, 22 May 2015 08:51:13 +0100 Subject: [PATCH 3/4] Style fix --- themes/powerline/powerline.theme.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/powerline/powerline.theme.bash b/themes/powerline/powerline.theme.bash index cb90b2e0..944414db 100644 --- a/themes/powerline/powerline.theme.bash +++ b/themes/powerline/powerline.theme.bash @@ -38,7 +38,7 @@ function set_rgb_color { function powerline_shell_prompt { 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} fi if [[ -n "${SSH_CLIENT}" ]]; then From 595ae1ab07194330a5741c47a740940a8ff4bccd Mon Sep 17 00:00:00 2001 From: jitakirin Date: Fri, 22 May 2015 08:51:32 +0100 Subject: [PATCH 4/4] Make powerline-multiline use the same check for sudo Reduces number of subprocesses to check for passwordless sudo by 1. --- themes/powerline-multiline/powerline-multiline.theme.bash | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/themes/powerline-multiline/powerline-multiline.theme.bash b/themes/powerline-multiline/powerline-multiline.theme.bash index 232a2a8e..6940b9ee 100644 --- a/themes/powerline-multiline/powerline-multiline.theme.bash +++ b/themes/powerline-multiline/powerline-multiline.theme.bash @@ -55,8 +55,7 @@ function set_rgb_color { function powerline_shell_prompt { SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR} - CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1 | grep "load" | wc -l) - if [ ${CAN_I_RUN_SUDO} -gt 0 ]; then + if sudo -n uptime 2>&1 | grep -q "load"; then SHELL_PROMPT_COLOR=${SHELL_THEME_PROMPT_COLOR_SUDO} fi SEGMENT_AT_RIGHT=0