Display xterm color palette

note, May 25, 2023, on Mitja Felicijan's blog

xterm color palette
#!/usr/bin/env bash
# xterm-palette.sh

trap 'tput sgr0' exit		# Clean up even if user hits ^C

function setfg () {
    printf '\e[38;5;%dm' $1
}

function setbg () {
    printf '\e[48;5;%dm' $1
}

function showcolors() {
    # Given an integer, display that many colors
    for ((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
	fi
    done
fi


# If -v is given, show all the colors
case ${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

Other notes

DateTitle
Alacritty open links with modifier
Take a screenshot in Plan9plan9
Compile drawterm on Fedora 38plan9
Embedding resources into binary with Cc
Extract lines from a file with sed
Sane default for Dungeon Crawl Stone Soup Online editiondcss
Personal sane Vim defaultsvim
Drawing Pixels in Plan9plan9
Dungeon Crawl Stone Soup - New player guidedcss
Sane defaults for tmux with more visible statusbar
Extending dte editor
Push to multiple origins at once in Git
Edsger W. Dijkstra Manuscripts ebook
Write ISO to USB Key
#cat-v on weechat configuration