Introduction
Introduction Statistics Contact Development Disclaimer Help
st-xresources-20230320-45a15676.diff - sites - public wiki contents of suckless…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-xresources-20230320-45a15676.diff (4853B)
---
1 From 6315407196933ec86be2b3c74f89bee746353e32 Mon Sep 17 00:00:00 2001
2 From: harishnkr <[email protected]>
3 Date: Mon, 20 Mar 2023 14:27:07 +0530
4 Subject: [PATCH] Fix xresources bgcolour fgcolour and cscolour definitio…
5
6 ---
7 config.def.h | 36 ++++++++++++++++++++++++
8 x.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++---
9 2 files changed, 110 insertions(+), 4 deletions(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index 91ab8ca..f11db58 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -170,6 +170,42 @@ static unsigned int defaultattr = 11;
16 */
17 static uint forcemousemod = ShiftMask;
18
19 +/*
20 + * Xresources preferences to load at startup
21 + */
22 +ResourcePref resources[] = {
23 + { "font", STRING, &font },
24 + { "color0", STRING, &colorname[0] },
25 + { "color1", STRING, &colorname[1] },
26 + { "color2", STRING, &colorname[2] },
27 + { "color3", STRING, &colorname[3] },
28 + { "color4", STRING, &colorname[4] },
29 + { "color5", STRING, &colorname[5] },
30 + { "color6", STRING, &colorname[6] },
31 + { "color7", STRING, &colorname[7] },
32 + { "color8", STRING, &colorname[8] },
33 + { "color9", STRING, &colorname[9] },
34 + { "color10", STRING, &colorname[10] },
35 + { "color11", STRING, &colorname[11] },
36 + { "color12", STRING, &colorname[12] },
37 + { "color13", STRING, &colorname[13] },
38 + { "color14", STRING, &colorname[14] },
39 + { "color15", STRING, &colorname[15] },
40 + { "background", STRING, &colorname[259] },
41 + { "foreground", STRING, &colorname[258] },
42 + { "cursorColor", STRING, &colorname[256] },
43 + { "termname", STRING, &termname },
44 + { "shell", STRING, &shell },
45 + { "minlatency", INTEGER, &minlatency },
46 + { "maxlatency", INTEGER, &maxlatency },
47 + { "blinktimeout", INTEGER, &blinktimeout },
48 + { "bellvolume", INTEGER, &bellvolume },
49 + { "tabspaces", INTEGER, &tabspaces },
50 + { "borderpx", INTEGER, &borderpx },
51 + { "cwscale", FLOAT, &cwscale },
52 + { "chscale", FLOAT, &chscale },
53 +};
54 +
55 /*
56 * Internal mouse shortcuts.
57 * Beware that overloading Button1 will disable the selection.
58 diff --git a/x.c b/x.c
59 index aa09997..ab10269 100644
60 --- a/x.c
61 +++ b/x.c
62 @@ -14,6 +14,7 @@
63 #include <X11/keysym.h>
64 #include <X11/Xft/Xft.h>
65 #include <X11/XKBlib.h>
66 +#include <X11/Xresource.h>
67
68 char *argv0;
69 #include "arg.h"
70 @@ -45,6 +46,19 @@ typedef struct {
71 signed char appcursor; /* application cursor */
72 } Key;
73
74 +/* Xresources preferences */
75 +enum resource_type {
76 + STRING = 0,
77 + INTEGER = 1,
78 + FLOAT = 2
79 +};
80 +
81 +typedef struct {
82 + char *name;
83 + enum resource_type type;
84 + void *dst;
85 +} ResourcePref;
86 +
87 /* X modifiers */
88 #define XK_ANY_MOD UINT_MAX
89 #define XK_NO_MOD 0
90 @@ -859,8 +873,8 @@ xclear(int x1, int y1, int x2, int y2)
91 void
92 xhints(void)
93 {
94 - XClassHint class = {opt_name ? opt_name : termname,
95 - opt_class ? opt_class : termname};
96 + XClassHint class = {opt_name ? opt_name : "st",
97 + opt_class ? opt_class : "St"};
98 XWMHints wm = {.flags = InputHint, .input = 1};
99 XSizeHints *sizeh;
100
101 @@ -1135,8 +1149,6 @@ xinit(int cols, int rows)
102 pid_t thispid = getpid();
103 XColor xmousefg, xmousebg;
104
105 - if (!(xw.dpy = XOpenDisplay(NULL)))
106 - die("can't open display\n");
107 xw.scr = XDefaultScreen(xw.dpy);
108 xw.vis = XDefaultVisual(xw.dpy, xw.scr);
109
110 @@ -2014,6 +2026,59 @@ run(void)
111 }
112 }
113
114 +int
115 +resource_load(XrmDatabase db, char *name, enum resource_type rtype, voi…
116 +{
117 + char **sdst = dst;
118 + int *idst = dst;
119 + float *fdst = dst;
120 +
121 + char fullname[256];
122 + char fullclass[256];
123 + char *type;
124 + XrmValue ret;
125 +
126 + snprintf(fullname, sizeof(fullname), "%s.%s",
127 + opt_name ? opt_name : "st", name);
128 + snprintf(fullclass, sizeof(fullclass), "%s.%s",
129 + opt_class ? opt_class : "St", name);
130 + fullname[sizeof(fullname) - 1] = fullclass[sizeof(fullclass) - …
131 +
132 + XrmGetResource(db, fullname, fullclass, &type, &ret);
133 + if (ret.addr == NULL || strncmp("String", type, 64))
134 + return 1;
135 +
136 + switch (rtype) {
137 + case STRING:
138 + *sdst = ret.addr;
139 + break;
140 + case INTEGER:
141 + *idst = strtoul(ret.addr, NULL, 10);
142 + break;
143 + case FLOAT:
144 + *fdst = strtof(ret.addr, NULL);
145 + break;
146 + }
147 + return 0;
148 +}
149 +
150 +void
151 +config_init(void)
152 +{
153 + char *resm;
154 + XrmDatabase db;
155 + ResourcePref *p;
156 +
157 + XrmInitialize();
158 + resm = XResourceManagerString(xw.dpy);
159 + if (!resm)
160 + return;
161 +
162 + db = XrmGetStringDatabase(resm);
163 + for (p = resources; p < resources + LEN(resources); p++)
164 + resource_load(db, p->name, p->type, p->dst);
165 +}
166 +
167 void
168 usage(void)
169 {
170 @@ -2087,6 +2152,11 @@ run:
171
172 setlocale(LC_CTYPE, "");
173 XSetLocaleModifiers("");
174 +
175 + if(!(xw.dpy = XOpenDisplay(NULL)))
176 + die("Can't open display\n");
177 +
178 + config_init();
179 cols = MAX(cols, 1);
180 rows = MAX(rows, 1);
181 tnew(cols, rows);
182 --
183 2.39.2
184
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.