]> git.wh0rd.org - home.git/blobdiff - .bin/bash-colors
PS1: shorten slightly & add PS0 recovery
[home.git] / .bin / bash-colors
index bef513039776608154ba7930ce0631732de783c7..ed61f8b3e131f81c2c8bae4b881d5a1c62b1579d 100755 (executable)
@@ -1,6 +1,115 @@
 #!/bin/bash
-for i in {0..1} ; do
-       for j in {30..37} ; do
-               echo -e '\e['"${i};${j}mthis color is: \\\\e[${i};${j}m"
+# Author: Mike Frysinger <vapier@gmail.com>; released into the public domain; suck it.
+
+# 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
-done
+}
+
+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
+}
+
+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 "$@"