Introduction
Introduction Statistics Contact Development Disclaimer Help
st-xresources-20200604-9ba7ecf.diff - sites - public wiki contents of suckless.…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-xresources-20200604-9ba7ecf.diff (4840B)
---
1 From 2752a599ee01305a435729bfacf43b1dde7cf0ef Mon Sep 17 00:00:00 2001
2 From: Benji Encalada Mora <[email protected]>
3 Date: Thu, 4 Jun 2020 00:41:10 -0500
4 Subject: [PATCH] fix: replace xfps and actionfps variables
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 6f05dce..9b99782 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -168,6 +168,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[256] },
41 + { "foreground", STRING, &colorname[257] },
42 + { "cursorColor", STRING, &colorname[258] },
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 210f184..76f167f 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 @@ -828,8 +842,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 @@ -1104,8 +1118,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 @@ -1964,6 +1976,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 @@ -2037,6 +2102,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.26.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.