X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=.bin%2Fbash-colors;h=ed61f8b3e131f81c2c8bae4b881d5a1c62b1579d;hb=847136a30dbf711fc2ccab762fb294218c8004ea;hp=04c637682d3dd7f191f5003cf925a232f09d7b1d;hpb=b73f07c77bd3c6846db6337ed67a36c531df97fe;p=home.git diff --git a/.bin/bash-colors b/.bin/bash-colors index 04c6376..ed61f8b 100755 --- a/.bin/bash-colors +++ b/.bin/bash-colors @@ -1,24 +1,115 @@ #!/bin/bash +# Author: Mike Frysinger ; released into the public domain; suck it. -if [[ $1 == "--env" ]] ; then - colors=( - GOOD="\$'\e[32;01m'" - WARN="\$'\e[33;01m'" - BAD="\$'\e[31;01m'" - HILITE="\$'\e[36;01m'" - BRACKET="\$'\e[34;0m'" - NORMAL="\$'\e[0m'" +# This is for bash. +BASH_PREFIX="\e" +# And this is the portable one. +POSIX_PREFIX="\033" +# Default to bash. +PREFIX=${BASH_PREFIX} + +show_env() { + local c colors=( + GOOD="\$'${PREFIX}[32;01m'" + WARN="\$'${PREFIX}[33;01m'" + BAD="\$'${PREFIX}[31;01m'" + HILITE="\$'${PREFIX}[36;01m'" + BRACKET="\$'${PREFIX}[34;01m'" + NORMAL="\$'${PREFIX}[0m'" ) for c in "${colors[@]}" ; do [[ -t 0 ]] || c="${c%=*}=" echo "${c}" done +} - exit 0 -fi +check256() { + if [[ ${TERM} != *-256color ]] ; then + ( + echo "warning: TERM (${TERM}) does not end in '-256color';" + echo "warning: trying to use 256 colors might not work." + ) >&2 + fi +} -for i in {0..1} ; do - for j in {30..37} ; do - echo -e '\e['"${i};${j}mthis color is: \\\\e[${i};${j}m" - done -done +showit() { + local col="${PREFIX}[${1};${2}m" + printf '%bthis color is: %s %b\n' "${col}" "${col}" "${PREFIX}[0m" +} + +main() { + if [[ $1 == "--posix" ]] ; then + PREFIX=${POSIX_PREFIX} + shift + fi + case $1 in + --env) + show_env + ;; + ""|16|system) + for i in {0..1} ; do + for j in {30..37} ; do + showit ${i} ${j} + done + done + ;; + cube|6x6x6) + check256 + for n in {16..231} ; do + showit "38;05" $(printf '%03i' ${n}) + done + ;; + gr[ae]y) + check256 + for n in {232..255} ; do + showit "38;05" ${n} + done + ;; + all|256) + for x in system cube gray ; do + echo "### SET: ${x}" + "$0" ${x} + done + ;; + ncurses|curses|mutt|nano) + colors=( + black + red + green + yellow + blue + magenta + cyan + white + ) + norm=$(tput sgr0) + bold=$(tput bold) + blackfg=$(tput setaf 0) + for seta in "af" "ab" ; do + [[ ${seta} == "af" ]] && ground=fore || ground=back + for pfx in "" "bright" ; do + for (( i = 0; i < ${#colors[@]}; ++i )) ; do + [[ ${pfx} == "bright" ]] && printf "${bold}" + [[ ${seta} == "ab" ]] && printf "${blackfg}" + echo "$(tput set${seta} ${i})this is ${ground}ground color '${pfx}${colors[i]}'${norm}" + done + done + done + ;; + *) + cat <<-EOF + usage: $0 [--posix] [colors] + + Colors: + - --env - show env you can eval in a shell + - 16, system - show basic colors (default) + - cube, 6x6x6 - show most extended colors + - gray - show gray scale + - all, 256 - show all colors + - curses - show ncurses color names (used by mutt, nano, etc...) + EOF + exit 1 + ;; + esac +} +main "$@"