#!/usr/bin/env bash
# spmenu test script
# See LICENSE file for copyright and license details.
# reset sequence
reset='\033[0m'
# fg colors
v1='\033[0;30m'
v2='\033[0;31m'
v3='\033[0;32m'
v4='\033[0;33m'
v5='\033[0;34m'
v6='\033[0;35m'
v7='\033[0;36m'
v8='\033[0;37m'
v9='\033[1;30m'
v10='\033[1;31m'
v11='\033[1;32m'
v12='\033[1;33m'
v13='\033[1;34m'
v14='\033[1;35m'
v15='\033[1;36m'
v16='\033[1;37m'
# bg colors
b1='\033[0;40m'
b2='\033[0;41m'
b3='\033[0;42m'
b4='\033[0;43m'
b5='\033[0;44m'
b6='\033[0;45m'
b7='\033[0;46m'
b8='\033[0;47m'
b9='\033[1;40m'
b10='\033[1;41m'
b11='\033[1;42m'
b12='\033[1;43m'
b13='\033[1;44m'
b14='\033[1;45m'
b15='\033[1;46m'
b16='\033[1;47m'
cindex=0
l[0]=a
l[1]=b
l[2]=c
l[3]=d
l[4]=e
l[5]=f
l[6]=g
l[7]=h
l[8]=i
l[9]=j
l[10]=k
l[11]=l
l[12]=m
l[13]=n
l[14]=o
l[15]=p
l[16]=q
l[17]=r
l[18]=s
l[19]=t
l[20]=u
l[21]=v
l[22]=w
l[23]=x
l[24]=y
l[25]=z
protocol='Unknown'
[ -n "$DISPLAY" ] && protocol='X11' && protocol_arg="-x11"
[ -n "$WAYLAND_DISPLAY" ] && protocol='Wayland' && protocol_arg="-wl"
main() {
cat << EOF
████████████████████████████████
████████████████████████████████
████████████████████████████████
██████ ██████
██████ ██████
██████ ██████
██████ ███████████████████
██████ ███████████████████
██████ ███████████████████
██████
██████
███████████████████████████████
███████████████████████████████
███████████████████████████████
EOF
printf "${v2}s${v3}p${v4}m${v5}e${v6}n${v7}u${v8} $(${RUNLAUNCHER:-spmenu} -v | sed 's/spmenu-//g') ${reset}(using protocol $protocol)\n\
Press ${v3}↓${reset} or scroll to navigate, Press ${v3}Ctrl + Shift + P${reset} to change theme.\n\n\
16 foreground colors\n\n\
${v1}a${v2}b${v3}c${v4}d${v5}e${v6}f${v7}g${v8}h${v9}i${v10}j${v11}k${v12}j${v13}m${v14}n${v15}o${v16}p\n\
\n16 background colors\n\n\
${b1}\n\
${b2}\n\
${b3}\n\
${b4}\n\
${b5}\n\
${b6}\n\
${b7}\n\
${b8}\n\
${b9}\n\
${b10}\n\
${b11}\n\
${b12}\n\
${b13}\n\
${b14}\n\
${b15}\n\
${b16}\n\
"
cindex=0
l[0]=a
l[1]=b
l[2]=c
l[3]=d
l[4]=e
l[5]=f
l[6]=g
l[7]=h
l[8]=i
l[9]=j
l[10]=k
l[11]=l
l[12]=m
l[13]=n
l[14]=o
l[15]=p
l[16]=q
l[17]=r
l[18]=s
l[19]=t
l[20]=u
l[21]=v
l[22]=w
l[23]=x
l[24]=y
l[25]=z
printf "\n256 foreground colors\n\n"
for i in {0..255}; do
[ "$cindex" -gt "25" ] && cindex=0
printf "\e[38;5;%dm${l[cindex]}" "$i"
(((i+3) % 18)) || printf '\e[0m\n'
cindex=$((cindex+1))
done
printf "\n\n256 background colors\n\n"
for i in {0..255}; do
printf "\e[48;5;%dm " "$i"
(((i+3) % 18)) || printf '\e[0m\n'
done
printf "\n\nTrue color foreground colors\n\n"
awk 'BEGIN{
for (colnum = 0; colnum < 100; colnum++) {
r = 255-(colnum*255/100);
g = (colnum*510/100);
b = (colnum*255/100);
if (g>255) g = 510-g;
printf "\033[38;2;%d;%d;%dm%s\033[0m", r,g,b, "a";
i++;
}
printf "\n";
for (colnum = 0; colnum < 100; colnum++) {
r = 255-(colnum*255/100);
g = (colnum*510/100);
b = (colnum*255/100);
if (g>255) g = 510-g;
printf "\033[38;2;%d;%d;%dm%s\033[0m", r,g,b, "b";
i++;
}
printf "\n";
for (colnum = 0; colnum < 100; colnum++) {
r = 255-(colnum*255/100);
g = (colnum*510/100);
b = (colnum*255/100);
if (g>255) g = 510-g;
printf "\033[38;2;%d;%d;%dm%s\033[0m", r,g,b, "c";
i++;
}
printf "\n";
}'
printf "\nTrue color background colors\n\n"
awk 'BEGIN{
for (colnum = 0; colnum < 200; colnum++) {
r = 255-(colnum*255/200);
g = (colnum*510/200);
b = (colnum*255/200);
if (g>255) g = 510-g;
printf "\033[48;2;%d;%d;%dm%s\033[0m", r,g,b, " ";
i++;
}
printf "\n";
for (colnum = 0; colnum < 200; colnum++) {
r = 255-(colnum*255/200);
g = (colnum*510/200);
b = (colnum*255/200);
if (g>255) g = 510-g;
printf "\033[48;2;%d;%d;%dm%s\033[0m", r,g,b, " ";
i++;
}
printf "\n";
}'
printf "\n\
Formatting\n\n\
abcdefghijklmnopqrstuvwxyz\n\
abcdefghijklmnopqrstuvwxyz - b\n\
abcdefghijklmnopqrstuvwxyz - i\n\
abcdefghijklmnopqrstuvwxyz - s\n\
abcdefghijklmnopqrstuvwxyz - u\n\
abcdefghijklmnopqrstuvwxyz - sub\n\
abcdefghijklmnopqrstuvwxyz - sup\n\
abcdefghijklmnopqrstuvwxyz - tt\n\
abcdefghijklmnopqrstuvwxyz - small\n\
abcdefghijklmnopqrstuvwxyz - big\n\
\n"
printf "\n\
Emojis\n\nThe emojis are: Black Square, Red Square and Pirate Flag\n\
⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛\n\
🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥\n\
🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️🏴☠️\n\
\n"
printf "\nThe End\n"
printf "\nIf spmenu displayed 16 colors, 256 colors and true color (full RGB spectrum) as well as various forms of formatted text, everything works fine.\n"
printf "Otherwise please file a bug report. Click \033[38;2;00;00;238mhere${reset} to file a bug report.\n"
}
open_bug_report() {
[ -x "$(command -v $BROWSER)" ] && {
$BROWSER "https://git.speedie.site/speedie/spmenu/issues"
return 0
}
[ -x "$(command -v xdg-open)" ] && {
xdg-open "https://git.speedie.site/speedie/spmenu/issues"
return 0
}
return 1
}
text="$(main "$@" | ${RUNLAUNCHER:-spmenu} --pretext "https://spmenu.speedie.site" --hide-caret --no-allow-typing --top --lines 9000 $protocol_arg "$@" --columns 1 --prompt "spmenu test script")"
printf "%s" "$text" | grep -q "Otherwise please file a bug report." && open_bug_report
exit $?