Merge pull request #510 from GiulianoWF/master

themes/powerline: Add hex color capacity and user info text color
This commit is contained in:
Koichi Murase
2023-12-31 13:49:46 +09:00
committed by GitHub
9 changed files with 50 additions and 9 deletions

View File

@@ -7,6 +7,7 @@ POWERLINE_LEFT_SEPARATOR=${POWERLINE_LEFT_SEPARATOR:=""}
USER_INFO_SSH_CHAR=${POWERLINE_USER_INFO_SSH_CHAR:=" "}
USER_INFO_THEME_PROMPT_COLOR=45
USER_INFO_THEME_PROMPT_SECONDARY_COLOR="-"
USER_INFO_THEME_PROMPT_COLOR_SUDO=1
PYTHON_VENV_CHAR=${POWERLINE_PYTHON_VENV_CHAR:="p "}

View File

@@ -13,6 +13,7 @@ function __powerline_right_segment {
local separator_char="${POWERLINE_RIGHT_SEPARATOR}"
local padding=2
local separator_color=""
local text_color=${params[2]:-"-"}
if [[ "${SEGMENTS_AT_RIGHT}" -eq 0 ]]; then
separator_color="$(set_color ${params[1]} -)"
@@ -20,7 +21,7 @@ function __powerline_right_segment {
separator_color="$(set_color ${params[1]} ${LAST_SEGMENT_COLOR})"
(( padding += 1 ))
fi
RIGHT_PROMPT+="${separator_color}${separator_char}${_omb_prompt_normal}$(set_color - ${params[1]}) ${params[0]} ${_omb_prompt_normal}$(set_color - ${COLOR})${_omb_prompt_normal}"
RIGHT_PROMPT+="${separator_color}${separator_char}${_omb_prompt_normal}$(set_color ${text_color} ${params[1]}) ${params[0]} ${_omb_prompt_normal}$(set_color - ${COLOR})${_omb_prompt_normal}"
RIGHT_PROMPT_LENGTH=$(( ${#params[0]} + RIGHT_PROMPT_LENGTH + padding ))
LAST_SEGMENT_COLOR="${params[1]}"
(( SEGMENTS_AT_RIGHT += 1 ))

View File

@@ -8,6 +8,7 @@ POWERLINE_RIGHT_SEPARATOR=${POWERLINE_RIGHT_SEPARATOR:=""}
USER_INFO_SSH_CHAR=${POWERLINE_USER_INFO_SSH_CHAR:=" "}
USER_INFO_THEME_PROMPT_COLOR=32
USER_INFO_THEME_PROMPT_SECONDARY_COLOR="-"
USER_INFO_THEME_PROMPT_COLOR_SUDO=202
PYTHON_VENV_CHAR=${POWERLINE_PYTHON_VENV_CHAR:="p "}

View File

@@ -8,10 +8,11 @@ function __powerline_left_segment {
IFS="${OLD_IFS}"
local separator_char=""
local separator=""
local background_color=${params[2]:-"-"}
if [[ "${SEGMENTS_AT_LEFT}" -gt 0 ]]; then
separator="${separator_char}"
fi
LEFT_PROMPT+="${separator}$(set_color ${params[1]} -) ${params[0]} ${_omb_prompt_normal}"
LEFT_PROMPT+="${separator}$(set_color ${params[1]} ${background_color}) ${params[0]} ${_omb_prompt_normal}"
(( SEGMENTS_AT_LEFT += 1 ))
}

View File

@@ -7,6 +7,7 @@ POWERLINE_LEFT_SEPARATOR=${POWERLINE_LEFT_SEPARATOR:=""}
USER_INFO_SSH_CHAR=${POWERLINE_USER_INFO_SSH_CHAR:=" "}
USER_INFO_THEME_PROMPT_COLOR=240
USER_INFO_THEME_PROMPT_SECONDARY_COLOR="-"
USER_INFO_THEME_PROMPT_COLOR_SUDO=202
PYTHON_VENV_CHAR=${POWERLINE_PYTHON_VENV_CHAR:="p "}

View File

@@ -6,8 +6,9 @@ function __powerline_left_segment {
local OLD_IFS="${IFS}"; IFS="|"
local params=( $1 )
IFS="${OLD_IFS}"
local text_color=${params[2]:-"-"}
LEFT_PROMPT+="${separator}$(set_color - ${params[1]}) ${params[0]} ${_omb_prompt_normal}"
LEFT_PROMPT+="${separator}$(set_color ${text_color} ${params[1]}) ${params[0]} ${_omb_prompt_normal}"
LAST_SEGMENT_COLOR=${params[1]}
}

View File

@@ -4,6 +4,7 @@ source "$OSH/themes/powerline-plain/powerline-plain.base.sh"
USER_INFO_SSH_CHAR=${POWERLINE_USER_INFO_SSH_CHAR:="⌁ "}
USER_INFO_THEME_PROMPT_COLOR=32
USER_INFO_THEME_PROMPT_SECONDARY_COLOR="-"
USER_INFO_THEME_PROMPT_COLOR_SUDO=202
PYTHON_VENV_CHAR=${POWERLINE_PYTHON_VENV_CHAR:="ⓔ "}

View File

@@ -3,20 +3,51 @@
# Define this here so it can be used by all of the Powerline themes
THEME_CHECK_SUDO=${THEME_CHECK_SUDO:=false}
function _omb_theme_powerline_hex_to_rgb {
local hex_color="$1"
local r g b
r=$((16#${hex_color:1:2}))
g=$((16#${hex_color:3:2}))
b=$((16#${hex_color:5:2}))
REPLY="${r};${g};${b}"
}
function set_color {
local fg="" bg=""
if [[ "${1}" != "-" ]]; then
fg="38;5;${1}"
if [[ ${1} =~ ^[0-9]+$ ]]; then
fg="38;5;${1}" # ANSI 256-color code
elif [[ ${1} =~ ^[0-9]{1,3}(\;[0-9]{1,3}){2}$ ]]; then
fg="38;2;${1}" # RGB color code
elif [[ ${1} =~ ^#[0-9A-Fa-f]{6}$ ]]; then
local REPLY
_omb_theme_powerline_hex_to_rgb "${1}"
fg="38;2;${REPLY}" # Hex color code converted to RGB
fi
fi
if [[ "${2}" != "-" ]]; then
bg="48;5;${2}"
[[ -n "${fg}" ]] && bg=";${bg}"
if [[ ${2} =~ ^[0-9]+$ ]]; then
bg="48;5;${2}" # ANSI 256-color code
elif [[ ${2} =~ ^[0-9]{1,3}(\;[0-9]{1,3}){2}$ ]]; then
bg="48;2;${2}" # RGB color code
elif [[ ${2} =~ ^#[0-9A-Fa-f]{6}$ ]]; then
local REPLY
_omb_theme_powerline_hex_to_rgb "${2}"
bg="48;2;${REPLY}" # Hex color code converted to RGB
fi
fi
echo -e "\[\033[${fg}${bg}m\]"
echo -e "\[\033[${fg}${fg:+${bg:+;}}${bg}m\]"
}
function __powerline_user_info_prompt {
local user_info=""
local color=${USER_INFO_THEME_PROMPT_COLOR}
local secondary_color="${USER_INFO_THEME_PROMPT_SECONDARY_COLOR}"
if [[ "${THEME_CHECK_SUDO}" = true ]]; then
# check whether sudo is active for no-password executions
@@ -38,7 +69,7 @@ function __powerline_user_info_prompt {
fi
;;
esac
[[ -n "${user_info}" ]] && echo "${user_info}|${color}"
[[ -n "${user_info}" ]] && echo "${user_info}|${color}|${secondary_color}"
}
function __powerline_ruby_prompt {
@@ -128,11 +159,13 @@ function __powerline_left_segment {
IFS="${OLD_IFS}"
local separator_char="${POWERLINE_LEFT_SEPARATOR}"
local separator=""
local text_color=${params[2]:-"-"}
if [[ "${SEGMENTS_AT_LEFT}" -gt 0 ]]; then
separator="$(set_color ${LAST_SEGMENT_COLOR} ${params[1]})${separator_char}${_omb_prompt_normal}"
fi
LEFT_PROMPT+="${separator}$(set_color - ${params[1]}) ${params[0]} ${_omb_prompt_normal}"
LEFT_PROMPT+="${separator}$(set_color ${text_color} ${params[1]}) ${params[0]} ${_omb_prompt_normal}"
LAST_SEGMENT_COLOR=${params[1]}
(( SEGMENTS_AT_LEFT += 1 ))
}

View File

@@ -7,6 +7,7 @@ POWERLINE_LEFT_SEPARATOR=${POWERLINE_LEFT_SEPARATOR:=""}
USER_INFO_SSH_CHAR=${POWERLINE_USER_INFO_SSH_CHAR:=" "}
USER_INFO_THEME_PROMPT_COLOR=32
USER_INFO_THEME_PROMPT_SECONDARY_COLOR="-"
USER_INFO_THEME_PROMPT_COLOR_SUDO=202
PYTHON_VENV_CHAR=${POWERLINE_PYTHON_VENV_CHAR:="p "}