lib/{utils,omb-prompt-colors}: Support bright color names

This commit is contained in:
Koichi Murase
2022-01-24 16:08:10 +09:00
parent 827277253a
commit 973a8bdf30
2 changed files with 84 additions and 136 deletions

View File

@@ -81,59 +81,29 @@ function _omb_theme_color_echo {
echo "\033[${out}m"
}
_omb_prompt_brown='\[\e[0;31m\]'
_omb_prompt_green='\[\e[0;32m\]'
_omb_prompt_olive='\[\e[0;33m\]'
_omb_prompt_navy='\[\e[0;34m\]'
_omb_prompt_purple='\[\e[0;35m\]'
_omb_prompt_black='\[\e[0;30m\]'
_omb_prompt_teal='\[\e[0;36m\]'
_omb_prompt_white='\[\e[0;37m\]'
_omb_prompt_red='\[\e[0;91m\]'
function _omb_prompt_color_initialize {
_omb_prompt_normal='\[\e[0m\]'
_omb_prompt_reset_color='\[\e[39m\]'
_omb_prompt_bold_black='\[\e[30;1m\]'
_omb_prompt_bold_brown='\[\e[31;1m\]'
_omb_prompt_bold_green='\[\e[32;1m\]'
_omb_prompt_bold_olive='\[\e[33;1m\]'
_omb_prompt_bold_navy='\[\e[34;1m\]'
_omb_prompt_bold_purple='\[\e[35;1m\]'
_omb_prompt_bold_teal='\[\e[36;1m\]'
_omb_prompt_bold_white='\[\e[37;1m\]'
_omb_prompt_bold_red='\[\e[91;1m\]'
# used by themes/gallifrey
_omb_prompt_bold='\[\e[1m\]'
_omb_prompt_underline_black='\[\e[30;4m\]'
_omb_prompt_underline_brown='\[\e[31;4m\]'
_omb_prompt_underline_green='\[\e[32;4m\]'
_omb_prompt_underline_olive='\[\e[33;4m\]'
_omb_prompt_underline_navy='\[\e[34;4m\]'
_omb_prompt_underline_purple='\[\e[35;4m\]'
_omb_prompt_underline_teal='\[\e[36;4m\]'
_omb_prompt_underline_white='\[\e[37;4m\]'
_omb_prompt_underline_red='\[\e[91;4m\]'
local -a normal_colors=(black brown green olive navy purple teal silver)
local -a bright_colors=(gray red lime yellow blue magenta cyan white)
local index
for ((index = 0; index < 8; index++)); do
printf -v "_omb_prompt_${normal_colors[index]}" %s '\[\e[0;3'"$index"'m\]'
printf -v "_omb_prompt_bold_${normal_colors[index]}" %s '\[\e[3'"$index"';1m\]'
printf -v "_omb_prompt_underline_${normal_colors[index]}" %s '\[\e[3'"$index"';4m\]'
printf -v "_omb_prompt_background_${normal_colors[index]}" %s '\[\e[4'"$index"'m\]'
printf -v "_omb_prompt_${bright_colors[index]}" %s '\[\e[0;9'"$index"'m\]'
printf -v "_omb_prompt_bold_${bright_colors[index]}" %s '\[\e[9'"$index"';1m\]'
printf -v "_omb_prompt_underline_${bright_colors[index]}" %s '\[\e[9'"$index"';4m\]'
printf -v "_omb_prompt_background_${bright_colors[index]}" %s '\[\e[10'"$index"'m\]'
done
}
_omb_prompt_color_initialize
_omb_prompt_background_black='\[\e[40m\]'
_omb_prompt_background_brown='\[\e[41m\]'
_omb_prompt_background_green='\[\e[42m\]'
_omb_prompt_background_olive='\[\e[43m\]'
_omb_prompt_background_navy='\[\e[44m\]'
_omb_prompt_background_purple='\[\e[45m\]'
_omb_prompt_background_teal='\[\e[46m\]'
_omb_prompt_background_white='\[\e[47;1m\]'
_omb_prompt_background_red='\[\e[101m\]'
_omb_prompt_normal='\[\e[0m\]'
_omb_prompt_reset_color='\[\e[39m\]'
# These colors are intended to be used with `echo`
# These variables are defined in "lib/utils.sh"
# - _omb_term_{,_bold,_underline,_background}{<basic8>,red,white,violet}
_omb_term_normal=$'\e[0m'
_omb_term_reset_color=$'\e[39m'
# used by themes/gallifrey
_omb_prompt_bold='\[\e[1m\]'
_omb_deprecate_function 20000 color _omb_theme_color_prompt
_omb_deprecate_function 20000 echo_color _omb_theme_color_echo

View File

@@ -124,35 +124,29 @@ _omb_util_function_exists() {
# Set Colors
#
# Use colors, but only if connected to a terminal, and that terminal
# supports them.
if [[ ! -t 1 ]]; then
_omb_term_colors=
_omb_term_bold=
_omb_term_underline=
_omb_term_reset=
# supports them. These colors are intended to be used with `echo`
#
_omb_term_color_initialize() {
local name
local -a normal_colors=(black brown green olive navy purple teal silver)
local -a bright_colors=(gray red lime yellow blue magenta cyan white)
_omb_term_black=
_omb_term_brown=
_omb_term_green=
_omb_term_olive=
_omb_term_navy=
_omb_term_purple=
_omb_term_teal=
_omb_term_silver=
if [[ ! -t 1 ]]; then
_omb_term_colors=
_omb_term_bold=
_omb_term_underline=
_omb_term_reset=
_omb_term_normal=
_omb_term_reset_color=
for name in "${normal_colors[@]}" "${bright_colors[@]}" violet; do
printf -v "_omb_term_$name" ''
printf -v "_omb_term_background_$name" ''
printf -v "_omb_term_bold_$name" ''
printf -v "_omb_term_underline_$name" ''
done
return 0
fi
_omb_term_background_black=
_omb_term_background_brown=
_omb_term_background_green=
_omb_term_background_olive=
_omb_term_background_navy=
_omb_term_background_purple=
_omb_term_background_teal=
_omb_term_background_silver=
_omb_term_red=
_omb_term_white=
_omb_term_violet=
else
if _omb_util_binary_exists tput; then
_omb_term_colors=$(tput colors 2>/dev/null || tput Co 2>/dev/null)
_omb_term_bold=$(tput bold 2>/dev/null || tput md 2>/dev/null)
@@ -164,81 +158,65 @@ else
_omb_term_underline=$'\e[4m'
_omb_term_reset=$'\e[0m'
fi
_omb_term_normal=$'\e[0m'
_omb_term_reset_color=$'\e[39m'
# normal colors
if ((_omb_term_colors >= 8)); then
_omb_term_black=$(tput setaf 0 2>/dev/null || tput AF 0 2>/dev/null)
_omb_term_brown=$(tput setaf 1 2>/dev/null || tput AF 1 2>/dev/null)
_omb_term_green=$(tput setaf 2 2>/dev/null || tput AF 2 2>/dev/null)
_omb_term_olive=$(tput setaf 3 2>/dev/null || tput AF 3 2>/dev/null)
_omb_term_navy=$(tput setaf 4 2>/dev/null || tput AF 4 2>/dev/null)
_omb_term_purple=$(tput setaf 5 2>/dev/null || tput AF 5 2>/dev/null)
_omb_term_teal=$(tput setaf 6 2>/dev/null || tput AF 6 2>/dev/null)
_omb_term_silver=$(tput setaf 7 2>/dev/null || tput AF 7 2>/dev/null)
local index
for ((index = 0; index < 8; index++)); do
local fg=$(tput setaf "$index" 2>/dev/null || tput AF "$index" 2>/dev/null)
[[ $fg ]] || fg=$'\e[3'$index'm'
printf -v "_omb_term_${normal_colors[index]}" %s "$fg"
printf -v "_omb_term_background_${normal_colors[index]}" '\e[4%sm' "$index"
done
else
_omb_term_black=$'\e[30m'
_omb_term_brown=$'\e[31m'
_omb_term_green=$'\e[32m'
_omb_term_olive=$'\e[33m'
_omb_term_navy=$'\e[34m'
_omb_term_purple=$'\e[35m'
_omb_term_teal=$'\e[36m'
_omb_term_silver=$'\e[37m'
local index
for ((index = 0; index < 8; index++)); do
printf -v "_omb_term_${normal_colors[index]}" '\e[3%sm' "$index"
printf -v "_omb_term_background_${normal_colors[index]}" '\e[4%sm' "$index"
done
fi
_omb_term_background_black=$'\e[40m'
_omb_term_background_brown=$'\e[41m'
_omb_term_background_green=$'\e[42m'
_omb_term_background_olive=$'\e[43m'
_omb_term_background_navy=$'\e[44m'
_omb_term_background_purple=$'\e[45m'
_omb_term_background_teal=$'\e[46m'
_omb_term_background_silver=$'\e[47m'
# bright colors
if ((_omb_term_colors >= 16)); then
_omb_term_red=$(tput setaf 9 2>/dev/null || tput AF 9 2>/dev/null)
_omb_term_white=$(tput setaf 15 2>/dev/null || tput AF 15 2>/dev/null)
_omb_term_background_red=$_omb_term_background_brown$'\e[101m'
_omb_term_background_white=$_omb_term_background_silver$'\e[107m'
local index
for ((index = 0; index < 8; index++)); do
local fg=$(tput setaf $((index+8)) 2>/dev/null || tput AF $((index+8)) 2>/dev/null)
[[ $fg ]] || fg=$'\e[9'$index'm'
local refbg=_omb_term_background_${normal_colors[index]}
local bg=${!refbg}$'\e[10'$index'm'
printf -v "_omb_term_${bright_colors[index]}" %s "$fg"
printf -v "_omb_term_background_${bright_colors[index]}" %s "$bg"
done
else
_omb_term_red=$_omb_term_bold$_omb_term_brown
_omb_term_white=$_omb_term_bold$_omb_term_silver
_omb_term_background_red=$_omb_term_bold$_omb_term_background_brown
_omb_term_background_white=$_omb_term_bold$_omb_term_background_silver
# copy normal colors to bright colors (with bold)
local index
for ((index = 0; index < 8; index++)); do
local reffg=_omb_term_${normal_colors[index]}
local refbg=_omb_term_background_${normal_colors[index]}
printf -v "_omb_term_${bright_colors[index]}" %s "$_omb_term_bold${!reffg}"
printf -v "_omb_term_background_${bright_colors[index]}" %s "$_omb_term_bold${!refbg}"
done
fi
# index colors
if ((_omb_term_colors == 256)); then
_omb_term_violet=$(tput setaf 171 2>/dev/null || tput AF 171 2>/dev/null)
_omb_term_violet=$'\e[38;5;171m'
_omb_term_background_violet=$'\e[48;5;171m'
else
_omb_term_violet=$_omb_term_purple
_omb_term_background_violet=$_omb_term_background_purple
fi
fi
_omb_term_bold_black=$_omb_term_bold$_omb_term_black
_omb_term_bold_brown=$_omb_term_bold$_omb_term_brown
_omb_term_bold_green=$_omb_term_bold$_omb_term_green
_omb_term_bold_olive=$_omb_term_bold$_omb_term_olive
_omb_term_bold_navy=$_omb_term_bold$_omb_term_navy
_omb_term_bold_purple=$_omb_term_bold$_omb_term_purple
_omb_term_bold_teal=$_omb_term_bold$_omb_term_teal
_omb_term_bold_silver=$_omb_term_bold$_omb_term_silver
_omb_term_bold_red=$_omb_term_bold$_omb_term_red
_omb_term_bold_white=$_omb_term_bold$_omb_term_white
_omb_term_bold_violet=$_omb_term_bold$_omb_term_violet
_omb_term_underline_black=$_omb_term_underline$_omb_term_black
_omb_term_underline_brown=$_omb_term_underline$_omb_term_brown
_omb_term_underline_green=$_omb_term_underline$_omb_term_green
_omb_term_underline_olive=$_omb_term_underline$_omb_term_olive
_omb_term_underline_navy=$_omb_term_underline$_omb_term_navy
_omb_term_underline_purple=$_omb_term_underline$_omb_term_purple
_omb_term_underline_teal=$_omb_term_underline$_omb_term_teal
_omb_term_underline_silver=$_omb_term_underline$_omb_term_silver
_omb_term_underline_red=$_omb_term_underline$_omb_term_red
_omb_term_underline_white=$_omb_term_underline$_omb_term_white
_omb_term_underline_violet=$_omb_term_underline$_omb_term_violet
# bold / underline versions
for name in "${normal_colors[@]}" "${bright_colors[@]}" violet; do
local ref=_omb_term_$name
printf -v "_omb_term_bold_$name" %s "$_omb_term_bold${!ref}"
printf -v "_omb_term_underline_$name" %s "$_omb_term_underline${!ref}"
done
}
_omb_term_color_initialize
#
# Headers and Logging