dmenu-xtheme-20220325-005000.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dmenu-xtheme-20220325-005000.diff (4586B)
---
1 diff --git a/Makefile b/Makefile
2 index a03a95c..4ccdf8d 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -17,19 +17,26 @@ options:
6 .c.o:
7 $(CC) -c $(CFLAGS) $<
8
9 -config.h:
10 - cp config.def.h $@
11 +theme.h:
12 + ./xtheme
13
14 -$(OBJ): arg.h config.h config.mk drw.h
15 +theme_beg.h:
16 + ./themesetup
17 +
18 +config.h: theme.h
19 + cp -n config.def.h $@
20 +
21 +$(OBJ): arg.h config.h config.mk drw.h theme_beg.h
22
23 dmenu: dmenu.o drw.o util.o
24 $(CC) -o $@ dmenu.o drw.o util.o $(LDFLAGS)
25 + rm -f theme_{beg,end}.h
26
27 stest: stest.o
28 $(CC) -o $@ stest.o $(LDFLAGS)
29
30 clean:
31 - rm -f dmenu stest $(OBJ) dmenu-$(VERSION).tar.gz
32 + rm -f dmenu stest $(OBJ) theme_{beg,end}.h dmenu-$(VERSION).tar.gz
33
34 dist: clean
35 mkdir -p dmenu-$(VERSION)
36 diff --git a/config.def.h b/config.def.h
37 index 1edb647..c072c86 100644
38 --- a/config.def.h
39 +++ b/config.def.h
40 @@ -1,17 +1,19 @@
41 /* See LICENSE file for copyright and license details. */
42 /* Default settings; can be overriden by command line. */
43
44 -static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */
45 +/* theme management */
46 +# include "theme_beg.h" /* this is a compile-time generated header file */
47 +# include "theme.h"
48 +
49 +static int topbar = DMENU_TOPBAR; /* -b option; if 0, dmenu appears at bottom */
50 /* -fn option overrides fonts[0]; default X11 font or font set */
51 -static const char *fonts[] = {
52 - "monospace:size=10"
53 -};
54 +static const char *fonts[] = DMENU_FONTS;
55 static const char *prompt = NULL; /* -p option; prompt to the left of input field */
56 static const char *colors[SchemeLast][2] = {
57 /* fg bg */
58 - [SchemeNorm] = { "#bbbbbb", "#222222" },
59 - [SchemeSel] = { "#eeeeee", "#005577" },
60 - [SchemeOut] = { "#000000", "#00ffff" },
61 + [SchemeNorm] = { DMENU_FOREGROUND, DMENU_BACKGROUND },
62 + [SchemeSel] = { DMENU_SELFOREGROUND, DMENU_SELBACKGROUND },
63 + [SchemeOut] = { DMENU_OUTFOREGROUND, DMENU_OUTBACKGROUND },
64 };
65 /* -l option; if nonzero, dmenu uses vertical list with given number of lines */
66 static unsigned int lines = 0;
67 @@ -21,3 +23,6 @@ static unsigned int lines = 0;
68 * for example: " /?\"&[]"
69 */
70 static const char worddelimiters[] = " ";
71 +
72 +/* theme management */
73 +# include "theme_end.h" /* this is a compile-time generated header file */
74 diff --git a/theme.h b/theme.h
75 new file mode 100644
76 index 0000000..e25c106
77 --- /dev/null
78 +++ b/theme.h
79 @@ -0,0 +1,8 @@
80 +# define DMENU_TOPBAR 1
81 +# define DMENU_FONTS {"monospace:size=10"}
82 +# define DMENU_FOREGROUND "#839496"
83 +# define DMENU_BACKGROUND "#002b36"
84 +# define DMENU_SELFOREGROUND "#002b36"
85 +# define DMENU_SELBACKGROUND "#839496"
86 +# define DMENU_OUTFOREGROUND "#000000"
87 +# define DMENU_OUTBACKGROUND "#00ffff"
88 diff --git a/themesetup b/themesetup
89 new file mode 100755
90 index 0000000..e8710c1
91 --- /dev/null
92 +++ b/themesetup
93 @@ -0,0 +1,5 @@
94 +#!/bin/sh
95 +
96 +echo \# if $(cat theme.h | cut -d' ' -f3 | sed "s/^/defined /;s/$/ ||/" | tr "\n" " ") 0 > theme_beg.h
97 +echo -e "# error (conflicting macro names)\n# endif" >> theme_beg.h
98 +cat theme.h | cut -d' ' -f3 | sed "s/^/# undef /;" > theme_end.h
99 diff --git a/xtable.md b/xtable.md
100 new file mode 100644
101 index 0000000..cda7c05
102 --- /dev/null
103 +++ b/xtable.md
104 @@ -0,0 +1,10 @@
105 +| TYPE | RESOURCE | DEFAULT VALUE | [ALTERNATIVE RESOURCE] |
106 +|:---------:|:-----------------:|:-------------------------:|:-------------------------:|
107 +| I | topbar | 1 | |
108 +| SA | fonts | monospace:size=10 | |
109 +| S | foreground | #bbbbbb | |
110 +| S | background | #222222 | |
111 +| S | selforeground | #eeeeee | background |
112 +| S | selbackground | #005577 | foreground |
113 +| S | outforeground | #000000 | |
114 +| S | outbackground | #00ffff | |
115 diff --git a/xtheme b/xtheme
116 new file mode 100755
117 index 0000000..4cc3067
118 --- /dev/null
119 +++ b/xtheme
120 @@ -0,0 +1,51 @@
121 +#!/bin/sh
122 +
123 +prefix=dmenu
124 +themeout=theme.h
125 +xtable=xtable.md
126 +
127 +rm -f $themeout
128 +
129 +set_resource ()
130 +{
131 + T=$1
132 + M=$2
133 + V=$3
134 +
135 + case $T in
136 + S)
137 + V=\"$V\"
138 + ;;
139 + SA)
140 + V="{\"$(echo $V | sed 's/, /", "/g')\"}"
141 + esac
142 +
143 + [[ $V == '{""}' ]] && V="{}"
144 +
145 + echo "# define $M $V" >> $themeout
146 +}
147 +
148 +cat "$xtable" |
149 + sed '1,2d;s/\t*|\t*/|/g;s/\(^|\)\|\(|$\)//g' |
150 + while IFS='|' read T R D A
151 + do
152 + m=$(echo "$prefix"'_'"$R" | tr '[:lower:]' '[:upper:]')
153 +
154 + l=''
155 +
156 + for r in "$R" "$A"
157 + do
158 + [[ "$r" == '' ]] && continue
159 +
160 + l=$(xgetres "$prefix.$r")
161 +
162 + if [[ "$l" != '' ]]
163 + then
164 + set_resource $T $m "$l"
165 + break
166 + fi
167 + done
168 +
169 + [[ "$l" == '' ]] &&
170 + set_resource $T $m "$D"
171 + done