spmenu/scripts/make/generate-theme.sh
speedie 9373133c03 some script improvements
TODO: generate-keybind-list is absolutely horrible
2023-05-19 00:14:22 +02:00

97 lines
2.6 KiB
Bash
Executable file

#!/bin/bash
# generate-theme.sh
# Generate a theme from a list of colors
declare -a color
help() {
cat << EOF
usage: $0 [-c] color-list
EOF
exit 1
}
read_colors() {
i=1
color=()
while true; do
color[i]="$(sed -n ${i},${i}p $1)"
ccol="${color[i]}"
[ "${#ccol}" != "7" ] || [ "${ccol:0:1}" != "#" ] && color[i]="#000000"
[ "$i" = "18" ] && break
i=$((i+1))
done
}
write_array() {
cat << EOF
/* spmenu colorscheme generated from ${1:-None} */
theme = {
color = ( {
itemnormfg = "${color[17]}";
itemnormbg = "${color[18]}";
itemnormfg2 = "${color[17]}";
itemnormbg2 = "${color[18]}";
itemselfg = "${color[8]}";
itemselbg = "${color[2]}";
itemmarkedfg = "${color[1]}";
itemmarkedbg = "${color[7]}";
itemnormprifg = "${color[17]}";
itemnormpribg = "${color[18]}";
itemselprifg = "${color[17]}";
itemselpribg = "${color[13]}";
menu = "${color[18]}";
promptfg = "${color[18]}";
promptbg = "${color[4]}";
larrowfg = "${color[13]}";
rarrowfg = "${color[13]}";
larrowbg = "${color[18]}";
rarrowbg = "${color[18]}";
inputfg = "${color[17]}";
inputbg = "${color[18]}";
numfg = "${color[1]}";
numbg = "${color[10]}";
normhlfg = "${color[7]}";
normhlbg = "${color[18]}";
selhlfg = "${color[16]}";
selhlbg = "${color[1]}";
caretfg = "${color[17]}";
border = "${color[10]}";
modefg = "${color[1]}";
modebg = "${color[3]}";
capsfg = "${color[1]}";
capsbg = "${color[5]}";
sgr0 = "${color[1]}";
sgr1 = "${color[2]}";
sgr2 = "${color[3]}";
sgr3 = "${color[4]}";
sgr4 = "${color[5]}";
sgr5 = "${color[6]}";
sgr6 = "${color[7]}";
sgr7 = "${color[8]}";
sgr8 = "${color[9]}";
sgr9 = "${color[10]}";
sgr10 = "${color[11]}";
sgr11 = "${color[12]}";
sgr12 = "${color[13]}";
sgr13 = "${color[14]}";
sgr14 = "${color[15]}";
sgr15 = "${color[16]}";
} );
file = ( { global = 0; } );
};
EOF
}
main() {
[ ! -f "$2" ] && help
[ "$(wc -l < "$2")" != "18" ] && printf "Color list is not 18 lines long.\n" && exit 1
read_colors "$2"
write_array "$2"
}
main "$@"