sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

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