Introduction
Introduction Statistics Contact Development Disclaimer Help
dmenu-xresources-alt-5.0.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dmenu-xresources-alt-5.0.diff (5277B)
---
1 diff -rupN orig/config.def.h patched/config.def.h
2 --- orig/config.def.h 2021-04-16 06:30:47.713924755 +0300
3 +++ patched/config.def.h 2021-04-16 06:34:14.956933252 +0300
4 @@ -2,16 +2,25 @@
5 /* Default settings; can be overriden by command line. */
6
7 static int topbar = 1; /* -b option; if 0, dmenu …
8 +
9 /* -fn option overrides fonts[0]; default X11 font or font set */
10 +static char font[] = "monospace:size=10";
11 static const char *fonts[] = {
12 - "monospace:size=10"
13 + font,
14 + "monospace:size=10",
15 };
16 -static const char *prompt = NULL; /* -p option; prompt to th…
17 -static const char *colors[SchemeLast][2] = {
18 +
19 +static char *prompt = NULL; /* -p option; prompt to the left…
20 +
21 +static char normfgcolor[] = "#bbbbbb";
22 +static char normbgcolor[] = "#222222";
23 +static char selfgcolor[] = "#eeeeee";
24 +static char selbgcolor[] = "#005577";
25 +static char *colors[SchemeLast][2] = {
26 /* fg bg */
27 - [SchemeNorm] = { "#bbbbbb", "#222222" },
28 - [SchemeSel] = { "#eeeeee", "#005577" },
29 - [SchemeOut] = { "#000000", "#00ffff" },
30 + [SchemeNorm] = { normfgcolor, normbgcolor },
31 + [SchemeSel] = { selfgcolor, selbgcolor },
32 + [SchemeOut] = { "#000000", "#00ffff" },
33 };
34 /* -l option; if nonzero, dmenu uses vertical list with given number of…
35 static unsigned int lines = 0;
36 @@ -21,3 +30,15 @@ static unsigned int lines = 0;
37 * for example: " /?\"&[]"
38 */
39 static const char worddelimiters[] = " ";
40 +
41 +/*
42 + * Xresources preferences to load at startup
43 + */
44 +ResourcePref resources[] = {
45 + { "font", STRING, &font },
46 + { "normfgcolor", STRING, &normfgcolor },
47 + { "normbgcolor", STRING, &normbgcolor },
48 + { "selfgcolor", STRING, &selfgcolor },
49 + { "selbgcolor", STRING, &selbgcolor },
50 + { "prompt", STRING, &prompt },
51 +};
52 diff -rupN orig/dmenu.c patched/dmenu.c
53 --- orig/dmenu.c 2021-04-16 06:30:47.715924755 +0300
54 +++ patched/dmenu.c 2021-04-16 06:30:59.668925245 +0300
55 @@ -11,6 +11,7 @@
56 #include <X11/Xlib.h>
57 #include <X11/Xatom.h>
58 #include <X11/Xutil.h>
59 +#include <X11/Xresource.h>
60 #ifdef XINERAMA
61 #include <X11/extensions/Xinerama.h>
62 #endif
63 @@ -53,6 +54,21 @@ static XIC xic;
64 static Drw *drw;
65 static Clr *scheme[SchemeLast];
66
67 +/* Xresources preferences */
68 +enum resource_type {
69 + STRING = 0,
70 + INTEGER = 1,
71 + FLOAT = 2
72 +};
73 +typedef struct {
74 + char *name;
75 + enum resource_type type;
76 + void *dst;
77 +} ResourcePref;
78 +
79 +static void load_xresources(void);
80 +static void resource_load(XrmDatabase db, char *name, enum resource_typ…
81 +
82 #include "config.h"
83
84 static int (*fstrncmp)(const char *, const char *, size_t) = strncmp;
85 @@ -395,7 +411,7 @@ keypress(XKeyEvent *ev)
86
87 switch(ksym) {
88 default:
89 -insert:
90 + insert:
91 if (!iscntrl(*buf))
92 insert(buf, len);
93 break;
94 @@ -547,6 +563,54 @@ readstdin(void)
95 lines = MIN(lines, i);
96 }
97
98 +void
99 +resource_load(XrmDatabase db, char *name, enum resource_type rtype, voi…
100 +{
101 + char *sdst = NULL;
102 + int *idst = NULL;
103 + float *fdst = NULL;
104 + sdst = dst;
105 + idst = dst;
106 + fdst = dst;
107 + char fullname[256];
108 + char *type;
109 + XrmValue ret;
110 + snprintf(fullname, sizeof(fullname), "%s.%s", "dmenu", name);
111 + fullname[sizeof(fullname) - 1] = '\0';
112 + XrmGetResource(db, fullname, "*", &type, &ret);
113 + if (!(ret.addr == NULL || strncmp("String", type, 64)))
114 + {
115 + switch (rtype) {
116 + case STRING:
117 + strcpy(sdst, ret.addr);
118 + break;
119 + case INTEGER:
120 + *idst = strtoul(ret.addr, NULL, 10);
121 + break;
122 + case FLOAT:
123 + *fdst = strtof(ret.addr, NULL);
124 + break;
125 + }
126 + }
127 +}
128 +
129 +void
130 +load_xresources(void)
131 +{
132 + Display *display;
133 + char *resm;
134 + XrmDatabase db;
135 + ResourcePref *p;
136 + display = XOpenDisplay(NULL);
137 + resm = XResourceManagerString(display);
138 + if (!resm)
139 + return;
140 + db = XrmGetStringDatabase(resm);
141 + for (p = resources; p < resources + LENGTH(resources); p++)
142 + resource_load(db, p->name, p->type, p->dst);
143 + XCloseDisplay(display);
144 +}
145 +
146 static void
147 run(void)
148 {
149 @@ -700,6 +764,9 @@ main(int argc, char *argv[])
150 XWindowAttributes wa;
151 int i, fast = 0;
152
153 + XrmInitialize();
154 + load_xresources();
155 +
156 for (i = 1; i < argc; i++)
157 /* these options take no arguments */
158 if (!strcmp(argv[i], "-v")) { /* prints version in…
159 diff -rupN orig/drw.c patched/drw.c
160 --- orig/drw.c 2021-04-16 06:30:47.718924755 +0300
161 +++ patched/drw.c 2021-04-16 06:30:59.670925245 +0300
162 @@ -208,7 +208,7 @@ drw_clr_create(Drw *drw, Clr *dest, cons
163 /* Wrapper to create color schemes. The caller has to call free(3) on t…
164 * returned color scheme when done using it. */
165 Clr *
166 -drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
167 +drw_scm_create(Drw *drw, char *clrnames[], size_t clrcount)
168 {
169 size_t i;
170 Clr *ret;
171 diff -rupN orig/drw.h patched/drw.h
172 --- orig/drw.h 2021-04-16 06:30:47.718924755 +0300
173 +++ patched/drw.h 2021-04-16 06:30:59.671925245 +0300
174 @@ -39,7 +39,7 @@ void drw_font_getexts(Fnt *font, const c
175
176 /* Colorscheme abstraction */
177 void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
178 -Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
179 +Clr *drw_scm_create(Drw *drw, char *clrnames[], size_t clrcount);
180
181 /* Cursor abstraction */
182 Cur *drw_cur_create(Drw *drw, int shape);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.