From: Andre Ramnitz Date: Thu, 3 Oct 2024 22:22:39 +0000 (+0200) Subject: colors: add a new mode X-Git-Tag: v0.2~24 X-Git-Url: https://git.ramnitz.eu/?a=commitdiff_plain;h=14ce55ec94bcf413e134c0ac09be2663423b947a;p=dotfiles.git colors: add a new mode --- diff --git a/local/dot-local/bin/colors b/local/dot-local/bin/colors index 32ebd2ca..157ff926 100755 --- a/local/dot-local/bin/colors +++ b/local/dot-local/bin/colors @@ -1,68 +1,8 @@ #!/bin/bash case $1 in - 1) - set -e - mainFunction () { - echo - printColors - printGuidelines - } - - - printColor () { - local color="${1}" - - printf "\033[1;4%sm " "${color}" - printf "\033[0m " - printf "\033[1;3%smSampleText " "${color}" - printf "\033[0;3%smSampleText " "${color}" - printf "\033[0m\n" - } - - - printColors () { - local color - # 0 black - # 1 red - # 2 green - # 3 yellow - # 4 blue - # 5 magenta / orange - # 6 cyan / purple - # 7 white - - for color in 0 7; do - printColor "${color}" - done - echo - - for color in 4 5 6; do - printColor "${color}" - done - echo - - for color in 2 3 1; do - printColor "${color}" - done - echo - } - - - printGuidelines () { - echo "A good palette has:" - echo "- All colors easy to read." - echo "- Similar eye catchiness within the same group, except for monochromes." - echo "- Similar or greater eye catchiness in upper groups, including this text." - echo "- Similar color within the same line." - echo "- The first group as: blue purple cyan." - echo "- The last group as: green yellow red." - echo - } - - - mainFunction;; - + "--help") + echo "Enter a number [1-4] to specify, which demo to run.";; 2) echo -e "\033[0mNC (No color)" echo -e "\033[1;37mWHITE\t\033[0;30mBLACK" @@ -72,7 +12,8 @@ case $1 in echo -e "\033[0;31mRED\t\033[1;31mLIGHT_RED" echo -e "\033[0;35mPURPLE\t\033[1;35mLIGHT_PURPLE" echo -e "\033[0;33mYELLOW\t\033[1;33mLIGHT_YELLOW" - echo -e "\033[1;30mGRAY\t\033[0;37mLIGHT_GRAY";; + echo -e "\033[1;30mGRAY\t\033[0;37mLIGHT_GRAY" + ;; 3) # Description: # @@ -119,13 +60,139 @@ case $1 in done echo - echo;; + echo + ;; 4) for colour in {1..225} do echo -en "\033[38;5;${colour}m38;5;${colour} \n" - done | column -x;; + done | column -x + ;; + 5) + theme=$(dirname $0)/scripts/${1:-base16-default-dark.sh} + if [ -f $theme ]; then + # get the color declarations in said theme, assumes there is a block of text that starts with color00= and ends with new line + source $theme + eval $(awk '/^color00=/,/^$/ {print}' $theme | sed 's/#.*//') + else + printf "No theme file %s found\n" $theme + fi; + ansi_mappings=( + Black + Red + Green + Yellow + Blue + Magenta + Cyan + White + Bright_Black + Bright_Red + Bright_Green + Bright_Yellow + Bright_Blue + Bright_Magenta + Bright_Cyan + Bright_White + ) + colors=( + base00 + base08 + base0B + base0A + base0D + base0E + base0C + base05 + base03 + base08 + base0B + base0A + base0D + base0E + base0C + base07 + base09 + base0F + base01 + base02 + base04 + base06 + ) + for padded_value in `seq -w 0 21`; do + color_variable="color${padded_value}" + eval current_color=\$${color_variable} + current_color=$(echo ${current_color//\//} | tr '[:lower:]' '[:upper:]') # get rid of slashes, and uppercase + non_padded_value=$((10#$padded_value)) + base16_color_name=${colors[$non_padded_value]} + current_color_label=${current_color:-unknown} + ansi_label=${ansi_mappings[$non_padded_value]} + block=$(printf "\x1b[48;5;${non_padded_value}m___________________________") + foreground=$(printf "\x1b[38;5;${non_padded_value}m$color_variable") + printf "%s %s %s %-30s %s\x1b[0m\n" $foreground $base16_color_name $current_color_label ${ansi_label:-""} $block + done; + if [ $# -eq 1 ]; then + printf "To restore current theme, source ~/.base16_theme or reopen your terminal\n" + fi + ;; *) - colors 1 - echo "Enter a number [1-4] to specify, which demo to run.";; + set -e + mainFunction () { + echo + printColors + printGuidelines + } + + + printColor () { + local color="${1}" + + printf "\033[1;4%sm " "${color}" + printf "\033[0m " + printf "\033[1;3%smSampleText " "${color}" + printf "\033[0;3%smSampleText " "${color}" + printf "\033[0m\n" + } + + + printColors () { + local color + # 0 black + # 1 red + # 2 green + # 3 yellow + # 4 blue + # 5 magenta / orange + # 6 cyan / purple + # 7 white + + for color in 0 7; do + printColor "${color}" + done + echo + + for color in 4 5 6; do + printColor "${color}" + done + echo + + for color in 2 3 1; do + printColor "${color}" + done + echo + } + + + printGuidelines () { + echo "A good palette has:" + echo "- All colors easy to read." + echo "- Similar eye catchiness within the same group, except for monochromes." + echo "- Similar or greater eye catchiness in upper groups, including this text." + echo "- Similar color within the same line." + echo "- The first group as: blue purple cyan." + echo "- The last group as: green yellow red." + } + + mainFunction + ;; esac