tabbed-xtheme-20220325-005500.diff (4180B)
1 diff --git a/Makefile b/Makefile 2 index 1b95d15..1191145 100644 3 --- a/Makefile 4 +++ b/Makefile 5 @@ -8,6 +8,7 @@ OBJ = ${SRC:.c=.o} 6 BIN = ${OBJ:.o=} 7 8 all: options ${BIN} 9 + rm -f theme_{beg,end}.h 10 11 options: 12 @echo tabbed build options: 13 @@ -19,11 +20,17 @@ options: 14 @echo CC $< 15 @${CC} -c ${CFLAGS} $< 16 17 -${OBJ}: config.h config.mk 18 +${OBJ}: config.h theme_beg.h config.mk 19 20 -config.h: 21 +theme.h: 22 + ./xtheme 23 + 24 +theme_beg.h: 25 + ./themesetup 26 + 27 +config.h: theme.h 28 @echo creating $@ from config.def.h 29 - @cp config.def.h $@ 30 + @cp -n config.def.h $@ 31 32 .o: 33 @echo CC -o $@ 34 @@ -31,7 +38,7 @@ config.h: 35 36 clean: 37 @echo cleaning 38 - @rm -f ${BIN} ${OBJ} tabbed-${VERSION}.tar.gz 39 + @rm -f ${BIN} ${OBJ} theme_{beg,end}.h tabbed-${VERSION}.tar.gz 40 41 dist: clean 42 @echo creating dist tarball 43 diff --git a/config.def.h b/config.def.h 44 index defa426..7c1126e 100644 45 --- a/config.def.h 46 +++ b/config.def.h 47 @@ -1,13 +1,17 @@ 48 /* See LICENSE file for copyright and license details. */ 49 50 +/* theme management */ 51 +# include "theme_beg.h" /* this is a compile-time generated header file */ 52 +# include "theme.h" 53 + 54 /* appearance */ 55 -static const char font[] = "monospace:size=9"; 56 -static const char* normbgcolor = "#222222"; 57 -static const char* normfgcolor = "#cccccc"; 58 -static const char* selbgcolor = "#555555"; 59 -static const char* selfgcolor = "#ffffff"; 60 -static const char* urgbgcolor = "#111111"; 61 -static const char* urgfgcolor = "#cc0000"; 62 +static const char font[] = TABBED_FONT; 63 +static const char* normbgcolor = TABBED_BACKGROUND; 64 +static const char* normfgcolor = TABBED_FOREGROUND; 65 +static const char* selbgcolor = TABBED_SELBACKGROUND; 66 +static const char* selfgcolor = TABBED_SELFOREGROUND; 67 +static const char* urgbgcolor = TABBED_URGBACKGROUND; 68 +static const char* urgfgcolor = TABBED_URGFOREGROUND; 69 static const char before[] = "<"; 70 static const char after[] = ">"; 71 static const char titletrim[] = "..."; 72 @@ -23,6 +27,9 @@ static Bool urgentswitch = False; 73 static int newposition = 0; 74 static Bool npisrelative = False; 75 76 +/* theme management */ 77 +# include "theme_end.h" /* this is a compile-time generated header file */ 78 + 79 #define SETPROP(p) { \ 80 .v = (char *[]){ "/bin/sh", "-c", \ 81 "prop=\"`xwininfo -children -id $1 | grep '^ 0x' |" \ 82 diff --git a/themesetup b/themesetup 83 new file mode 100755 84 index 0000000..e8710c1 85 --- /dev/null 86 +++ b/themesetup 87 @@ -0,0 +1,5 @@ 88 +#!/bin/sh 89 + 90 +echo \# if $(cat theme.h | cut -d' ' -f3 | sed "s/^/defined /;s/$/ ||/" | tr "\n" " ") 0 > theme_beg.h 91 +echo -e "# error (conflicting macro names)\n# endif" >> theme_beg.h 92 +cat theme.h | cut -d' ' -f3 | sed "s/^/# undef /;" > theme_end.h 93 diff --git a/xtable.md b/xtable.md 94 new file mode 100644 95 index 0000000..e05753a 96 --- /dev/null 97 +++ b/xtable.md 98 @@ -0,0 +1,9 @@ 99 +| TYPE | RESOURCE | DEFAULT VALUE | [ALTERNATIVE RESOURCE] | 100 +|:---------:|:---------------------:|:-------------------------:|:-------------------------:| 101 +| SA | font | monospace:size=9 | | 102 +| S | background | #222222 | | 103 +| S | foreground | #cccccc | | 104 +| S | selbackground | #555555 | foreground | 105 +| S | selforeground | #ffffff | background | 106 +| S | urgbackground | #111111 | | 107 +| S | urgforeground | #cc0000 | | 108 diff --git a/xtheme b/xtheme 109 new file mode 100755 110 index 0000000..6396cdd 111 --- /dev/null 112 +++ b/xtheme 113 @@ -0,0 +1,51 @@ 114 +#!/bin/sh 115 + 116 +prefix=tabbed 117 +themeout=theme.h 118 +xtable=xtable.md 119 + 120 +rm -f $themeout 121 + 122 +set_resource () 123 +{ 124 + T=$1 125 + M=$2 126 + V=$3 127 + 128 + case $T in 129 + S) 130 + V=\"$V\" 131 + ;; 132 + SA) 133 + V="{\"$(echo $V | sed 's/, /", "/g')\"}" 134 + esac 135 + 136 + [[ $V == '{""}' ]] && V="{}" 137 + 138 + echo "# define $M $V" >> $themeout 139 +} 140 + 141 +cat "$xtable" | 142 + sed '1,2d;s/\t*|\t*/|/g;s/\(^|\)\|\(|$\)//g' | 143 + while IFS='|' read T R D A 144 + do 145 + m=$(echo "$prefix"'_'"$R" | tr '[:lower:]' '[:upper:]') 146 + 147 + l='' 148 + 149 + for r in "$R" "$A" 150 + do 151 + [[ "$r" == '' ]] && continue 152 + 153 + l=$(xgetres "$prefix.$r") 154 + 155 + if [[ "$l" != '' ]] 156 + then 157 + set_resource $T $m "$l" 158 + break 159 + fi 160 + done 161 + 162 + [[ "$l" == '' ]] && 163 + set_resource $T $m "$D" 164 + done