bash xterm-palette.sh - will show you number of max colors available
bash xterm-palette.sh -v - will create a list of all colors with codes
#!/usr/bin/env bash
# xterm-palette.shtrap 'tput sgr0' exit # Clean up even if user hits ^Cfunction setfg () {
printf '\e[38;5;%dm' $1
}
function setbg () {
printf '\e[48;5;%dm' $1
}
function showcolors() {
# Given an integer, display that many colorsfor ((i=0; i<$1; i++))
do printf '%4d ' $i
setbg $i
tput el
tput sgr0
echo
done tput sgr0 el
}
# First, test if terminal supports OSC 4 at all.printf '\e]4;%d;?\a' 0
read -d $'\a' -s -t 0.1 </dev/tty
if [ -z "$REPLY" ]
then# OSC 4 not supported, so we'll fall back to terminfo max=$(tput colors)else# OSC 4 is supported, so use it for a binary search min=0
max=256
while [[ $((min+1)) -lt $max ]]
do i=$(( (min+max)/2 )) printf '\e]4;%d;?\a' $i
read -d $'\a' -s -t 0.1 </dev/tty
if [ -z "$REPLY" ]
then max=$i
else min=$i
fidonefi# If -v is given, show all the colorscase${1-none} in
none)
echo $max
;;
-v)
showcolors $max
;;
*)
if [[ "$1" -gt 0 ]]; then showcolors $1
else echo $max
fi ;;
esac | less --raw-control-chars --QUIT-AT-EOF --no-init