Introduction
Introduction Statistics Contact Development Disclaimer Help
st-focus-20230610-68d1ad9.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-focus-20230610-68d1ad9.diff (14084B)
---
1 From e08d495aaa29c53273942985f40212ef72715604 Mon Sep 17 00:00:00 2001
2 From: Julius Huelsmann <[email protected]>
3 Date: Sat, 30 May 2020 01:11:42 +0200
4 Subject: [PATCH 1/7] chore: add alpha patch
5
6 ---
7 config.def.h | 11 +++++++----
8 config.mk | 2 +-
9 st.h | 1 +
10 x.c | 40 ++++++++++++++++++++++++++++++----------
11 4 files changed, 39 insertions(+), 15 deletions(-)
12
13 diff --git a/config.def.h b/config.def.h
14 index 91ab8ca..6bd6e8d 100644
15 --- a/config.def.h
16 +++ b/config.def.h
17 @@ -93,6 +93,9 @@ char *termname = "st-256color";
18 */
19 unsigned int tabspaces = 8;
20
21 +/* bg opacity */
22 +float alpha = 0.8;
23 +
24 /* Terminal colors (16 first used in escape sequence) */
25 static const char *colorname[] = {
26 /* 8 normal colors */
27 @@ -120,8 +123,7 @@ static const char *colorname[] = {
28 /* more colors can be added after 255 to use with DefaultXX */
29 "#cccccc",
30 "#555555",
31 - "gray90", /* default foreground colour */
32 - "black", /* default background colour */
33 + "black",
34 };
35
36
37 @@ -129,8 +131,9 @@ static const char *colorname[] = {
38 * Default colors (colorname index)
39 * foreground, background, cursor, reverse cursor
40 */
41 -unsigned int defaultfg = 258;
42 -unsigned int defaultbg = 259;
43 +unsigned int defaultfg = 7;
44 +unsigned int defaultbg = 258;
45 +//static
46 unsigned int defaultcs = 256;
47 static unsigned int defaultrcs = 257;
48
49 diff --git a/config.mk b/config.mk
50 index 1e306f8..47c615e 100644
51 --- a/config.mk
52 +++ b/config.mk
53 @@ -16,7 +16,7 @@ PKG_CONFIG = pkg-config
54 INCS = -I$(X11INC) \
55 `$(PKG_CONFIG) --cflags fontconfig` \
56 `$(PKG_CONFIG) --cflags freetype2`
57 -LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \
58 +LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft -lXrender\
59 `$(PKG_CONFIG) --libs fontconfig` \
60 `$(PKG_CONFIG) --libs freetype2`
61
62 diff --git a/st.h b/st.h
63 index fd3b0d8..9f91e2a 100644
64 --- a/st.h
65 +++ b/st.h
66 @@ -124,3 +124,4 @@ extern unsigned int tabspaces;
67 extern unsigned int defaultfg;
68 extern unsigned int defaultbg;
69 extern unsigned int defaultcs;
70 +extern float alpha;
71 diff --git a/x.c b/x.c
72 index 2a3bd38..27e81d1 100644
73 --- a/x.c
74 +++ b/x.c
75 @@ -105,6 +105,7 @@ typedef struct {
76 XSetWindowAttributes attrs;
77 int scr;
78 int isfixed; /* is fixed geometry? */
79 + int depth; /* bit depth */
80 int l, t; /* left and top offset */
81 int gm; /* geometry mask */
82 } XWindow;
83 @@ -243,6 +244,7 @@ static char *usedfont = NULL;
84 static double usedfontsize = 0;
85 static double defaultfontsize = 0;
86
87 +static char *opt_alpha = NULL;
88 static char *opt_class = NULL;
89 static char **opt_cmd = NULL;
90 static char *opt_embed = NULL;
91 @@ -752,7 +754,7 @@ xresize(int col, int row)
92
93 XFreePixmap(xw.dpy, xw.buf);
94 xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
95 - DefaultDepth(xw.dpy, xw.scr));
96 + xw.depth);
97 XftDrawChange(xw.draw, xw.buf);
98 xclear(0, 0, win.w, win.h);
99
100 @@ -812,6 +814,13 @@ xloadcols(void)
101 else
102 die("could not allocate color %d\n", i);
103 }
104 +
105 + /* set alpha value of bg color */
106 + if (opt_alpha)
107 + alpha = strtof(opt_alpha, NULL);
108 + dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha…
109 + dc.col[defaultbg].pixel &= 0x00FFFFFF;
110 + dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24;
111 loaded = 1;
112 }
113
114 @@ -1134,11 +1143,23 @@ xinit(int cols, int rows)
115 Window parent;
116 pid_t thispid = getpid();
117 XColor xmousefg, xmousebg;
118 + XWindowAttributes attr;
119 + XVisualInfo vis;
120
121 if (!(xw.dpy = XOpenDisplay(NULL)))
122 die("can't open display\n");
123 xw.scr = XDefaultScreen(xw.dpy);
124 - xw.vis = XDefaultVisual(xw.dpy, xw.scr);
125 +
126 + if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) {
127 + parent = XRootWindow(xw.dpy, xw.scr);
128 + xw.depth = 32;
129 + } else {
130 + XGetWindowAttributes(xw.dpy, parent, &attr);
131 + xw.depth = attr.depth;
132 + }
133 +
134 + XMatchVisualInfo(xw.dpy, xw.scr, xw.depth, TrueColor, &vis);
135 + xw.vis = vis.visual;
136
137 /* font */
138 if (!FcInit())
139 @@ -1148,7 +1169,7 @@ xinit(int cols, int rows)
140 xloadfonts(usedfont, 0);
141
142 /* colors */
143 - xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
144 + xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);
145 xloadcols();
146
147 /* adjust fixed window geometry */
148 @@ -1168,19 +1189,15 @@ xinit(int cols, int rows)
149 | ButtonMotionMask | ButtonPressMask | ButtonReleaseMas…
150 xw.attrs.colormap = xw.cmap;
151
152 - if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0))))
153 - parent = XRootWindow(xw.dpy, xw.scr);
154 xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t,
155 - win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr),…
156 + win.w, win.h, 0, xw.depth, InputOutput,
157 xw.vis, CWBackPixel | CWBorderPixel | CWBitGrav…
158 | CWEventMask | CWColormap, &xw.attrs);
159
160 memset(&gcvalues, 0, sizeof(gcvalues));
161 gcvalues.graphics_exposures = False;
162 - dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
163 - &gcvalues);
164 - xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
165 - DefaultDepth(xw.dpy, xw.scr));
166 + xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth);
167 + dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalue…
168 XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
169 XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h);
170
171 @@ -2035,6 +2052,9 @@ main(int argc, char *argv[])
172 case 'a':
173 allowaltscreen = 0;
174 break;
175 + case 'A':
176 + opt_alpha = EARGF(usage());
177 + break;
178 case 'c':
179 opt_class = EARGF(usage());
180 break;
181 --
182 2.34.1
183
184
185 From 292b70d7b9976e624931f8ec264a8875e29d2f3c Mon Sep 17 00:00:00 2001
186 From: Julius Huelsmann <[email protected]>
187 Date: Sat, 30 May 2020 01:13:35 +0200
188 Subject: [PATCH 2/7] [patch:focus] add initial patch
189
190 ---
191 config.def.h | 6 +++---
192 st.h | 2 +-
193 x.c | 33 +++++++++++++++++++--------------
194 3 files changed, 23 insertions(+), 18 deletions(-)
195
196 diff --git a/config.def.h b/config.def.h
197 index 6bd6e8d..cdfbaf1 100644
198 --- a/config.def.h
199 +++ b/config.def.h
200 @@ -94,7 +94,7 @@ char *termname = "st-256color";
201 unsigned int tabspaces = 8;
202
203 /* bg opacity */
204 -float alpha = 0.8;
205 +float alpha = 0.8, alphaUnfocused = 0.6;
206
207 /* Terminal colors (16 first used in escape sequence) */
208 static const char *colorname[] = {
209 @@ -132,10 +132,10 @@ static const char *colorname[] = {
210 * foreground, background, cursor, reverse cursor
211 */
212 unsigned int defaultfg = 7;
213 -unsigned int defaultbg = 258;
214 -//static
215 +unsigned int defaultbg = 0;
216 unsigned int defaultcs = 256;
217 static unsigned int defaultrcs = 257;
218 +unsigned int bg = 17, bgUnfocused = 16;
219
220 /*
221 * Default shape of cursor
222 diff --git a/st.h b/st.h
223 index 9f91e2a..62e3486 100644
224 --- a/st.h
225 +++ b/st.h
226 @@ -124,4 +124,4 @@ extern unsigned int tabspaces;
227 extern unsigned int defaultfg;
228 extern unsigned int defaultbg;
229 extern unsigned int defaultcs;
230 -extern float alpha;
231 +extern float alpha, alphaUnfocused;
232 diff --git a/x.c b/x.c
233 index 27e81d1..05d6e2e 100644
234 --- a/x.c
235 +++ b/x.c
236 @@ -255,6 +255,7 @@ static char *opt_name = NULL;
237 static char *opt_title = NULL;
238
239 static uint buttons; /* bit field of pressed buttons */
240 +static int focused = 0;
241
242 void
243 clipcopy(const Arg *dummy)
244 @@ -792,35 +793,38 @@ xloadcolor(int i, const char *name, Color *ncolor)
245 return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor);
246 }
247
248 +void
249 +xloadalpha(void)
250 +{
251 + float const usedAlpha = focused ? alpha : alphaUnfocused;
252 + if (opt_alpha) alpha = strtof(opt_alpha, NULL);
253 + dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * usedA…
254 + dc.col[defaultbg].pixel &= 0x00FFFFFF;
255 + dc.col[defaultbg].pixel |= (unsigned char)(0xff * usedAlpha) <<…
256 +}
257 +
258 void
259 xloadcols(void)
260 {
261 - int i;
262 static int loaded;
263 Color *cp;
264
265 - if (loaded) {
266 - for (cp = dc.col; cp < &dc.col[dc.collen]; ++cp)
267 - XftColorFree(xw.dpy, xw.vis, xw.cmap, cp);
268 - } else {
269 - dc.collen = MAX(LEN(colorname), 256);
270 - dc.col = xmalloc(dc.collen * sizeof(Color));
271 + if (!loaded) {
272 + dc.collen = 1 + (defaultbg = MAX(LEN(colorname), 256));
273 + dc.col = xmalloc((dc.collen) * sizeof(Color));
274 }
275
276 - for (i = 0; i < dc.collen; i++)
277 + for (int i = 0; i+1 < dc.collen; ++i)
278 if (!xloadcolor(i, NULL, &dc.col[i])) {
279 if (colorname[i])
280 die("could not allocate color '%s'\n", …
281 else
282 die("could not allocate color %d\n", i);
283 }
284 + if (dc.collen) // cannot die, as the color is already loaded.
285 + xloadcolor(focused ?bg :bgUnfocused, NULL, &dc.col[defa…
286
287 - /* set alpha value of bg color */
288 - if (opt_alpha)
289 - alpha = strtof(opt_alpha, NULL);
290 - dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha…
291 - dc.col[defaultbg].pixel &= 0x00FFFFFF;
292 - dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24;
293 + xloadalpha();
294 loaded = 1;
295 }
296
297 @@ -2106,6 +2110,7 @@ run:
298 XSetLocaleModifiers("");
299 cols = MAX(cols, 1);
300 rows = MAX(rows, 1);
301 + defaultbg = MAX(LEN(colorname), 256);
302 tnew(cols, rows);
303 xinit(cols, rows);
304 xsetenv();
305 --
306 2.34.1
307
308
309 From 9bb6788325306d9ec2bead559dacd031287a2b8c Mon Sep 17 00:00:00 2001
310 From: Julius Huelsmann <[email protected]>
311 Date: Fri, 5 Jun 2020 20:48:06 +0200
312 Subject: [PATCH 3/7] [patch:focus]: fix
313
314 ---
315 x.c | 10 ++++++++++
316 1 file changed, 10 insertions(+)
317
318 diff --git a/x.c b/x.c
319 index 05d6e2e..97481ba 100644
320 --- a/x.c
321 +++ b/x.c
322 @@ -1798,12 +1798,22 @@ focus(XEvent *ev)
323 xseturgency(0);
324 if (IS_SET(MODE_FOCUS))
325 ttywrite("\033[I", 3, 0);
326 + if (!focused) {
327 + xloadcols();
328 + redraw();
329 + }
330 + focused = 1;
331 } else {
332 if (xw.ime.xic)
333 XUnsetICFocus(xw.ime.xic);
334 win.mode &= ~MODE_FOCUSED;
335 if (IS_SET(MODE_FOCUS))
336 ttywrite("\033[O", 3, 0);
337 + if (focused) {
338 + xloadcols();
339 + redraw();
340 + }
341 + focused = 0;
342 }
343 }
344
345 --
346 2.34.1
347
348
349 From 62b6683ddf40aff222b59d5e074770d8d7336342 Mon Sep 17 00:00:00 2001
350 From: Julius Huelsmann <[email protected]>
351 Date: Sat, 6 Jun 2020 12:57:43 +0200
352 Subject: [PATCH 4/7] [patch:focus]: fix
353
354 ---
355 x.c | 4 ++--
356 1 file changed, 2 insertions(+), 2 deletions(-)
357
358 diff --git a/x.c b/x.c
359 index 97481ba..c4a4b00 100644
360 --- a/x.c
361 +++ b/x.c
362 @@ -1799,10 +1799,10 @@ focus(XEvent *ev)
363 if (IS_SET(MODE_FOCUS))
364 ttywrite("\033[I", 3, 0);
365 if (!focused) {
366 + focused = 1;
367 xloadcols();
368 redraw();
369 }
370 - focused = 1;
371 } else {
372 if (xw.ime.xic)
373 XUnsetICFocus(xw.ime.xic);
374 @@ -1810,10 +1810,10 @@ focus(XEvent *ev)
375 if (IS_SET(MODE_FOCUS))
376 ttywrite("\033[O", 3, 0);
377 if (focused) {
378 + focused = 0;
379 xloadcols();
380 redraw();
381 }
382 - focused = 0;
383 }
384 }
385
386 --
387 2.34.1
388
389
390 From dc6c039192e887e70a2e6f07ac55c317e6b1c3be Mon Sep 17 00:00:00 2001
391 From: Julius Huelsmann <[email protected]>
392 Date: Thu, 23 Jul 2020 18:17:50 +0200
393 Subject: [PATCH 5/7] potential fix: exchange redraw with tfulldirt
394
395 ---
396 st.c | 1 -
397 st.h | 1 +
398 x.c | 4 ++--
399 3 files changed, 3 insertions(+), 3 deletions(-)
400
401 diff --git a/st.c b/st.c
402 index 62def59..8ee76a3 100644
403 --- a/st.c
404 +++ b/st.c
405 @@ -194,7 +194,6 @@ static void tsetscroll(int, int);
406 static void tswapscreen(void);
407 static void tsetmode(int, int, const int *, int);
408 static int twrite(const char *, int, int);
409 -static void tfulldirt(void);
410 static void tcontrolcode(uchar );
411 static void tdectest(char );
412 static void tdefutf8(char);
413 diff --git a/st.h b/st.h
414 index 62e3486..13be339 100644
415 --- a/st.h
416 +++ b/st.h
417 @@ -79,6 +79,7 @@ typedef union {
418
419 void die(const char *, ...);
420 void redraw(void);
421 +void tfulldirt(void);
422 void draw(void);
423
424 void printscreen(const Arg *);
425 diff --git a/x.c b/x.c
426 index c4a4b00..92c87b4 100644
427 --- a/x.c
428 +++ b/x.c
429 @@ -1801,7 +1801,7 @@ focus(XEvent *ev)
430 if (!focused) {
431 focused = 1;
432 xloadcols();
433 - redraw();
434 + tfulldirt();
435 }
436 } else {
437 if (xw.ime.xic)
438 @@ -1812,7 +1812,7 @@ focus(XEvent *ev)
439 if (focused) {
440 focused = 0;
441 xloadcols();
442 - redraw();
443 + tfulldirt();
444 }
445 }
446 }
447 --
448 2.34.1
449
450
451 From 4da97936d57e3528ef7cf36c254c0985f6640132 Mon Sep 17 00:00:00 2001
452 From: Wim Stockman <[email protected]>
453 Date: Sat, 4 Feb 2023 13:46:02 +0100
454 Subject: [PATCH 6/7] Performs upgrade avoid reloading all the colors aga…
455 again also avoids problem when colors are set dynamically when focus in…
456 out that the colourpallette is not reset each time.
457
458 ---
459 x.c | 7 +++----
460 1 file changed, 3 insertions(+), 4 deletions(-)
461
462 diff --git a/x.c b/x.c
463 index 92c87b4..879bf0e 100644
464 --- a/x.c
465 +++ b/x.c
466 @@ -796,6 +796,7 @@ xloadcolor(int i, const char *name, Color *ncolor)
467 void
468 xloadalpha(void)
469 {
470 + xloadcolor(focused ?bg :bgUnfocused, NULL, &dc.col[defaultbg]);
471 float const usedAlpha = focused ? alpha : alphaUnfocused;
472 if (opt_alpha) alpha = strtof(opt_alpha, NULL);
473 dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * usedA…
474 @@ -821,8 +822,6 @@ xloadcols(void)
475 else
476 die("could not allocate color %d\n", i);
477 }
478 - if (dc.collen) // cannot die, as the color is already loaded.
479 - xloadcolor(focused ?bg :bgUnfocused, NULL, &dc.col[defa…
480
481 xloadalpha();
482 loaded = 1;
483 @@ -1800,7 +1799,7 @@ focus(XEvent *ev)
484 ttywrite("\033[I", 3, 0);
485 if (!focused) {
486 focused = 1;
487 - xloadcols();
488 + xloadalpha();
489 tfulldirt();
490 }
491 } else {
492 @@ -1811,7 +1810,7 @@ focus(XEvent *ev)
493 ttywrite("\033[O", 3, 0);
494 if (focused) {
495 focused = 0;
496 - xloadcols();
497 + xloadalpha();
498 tfulldirt();
499 }
500 }
501 --
502 2.34.1
503
504
505 From ec16984d95e0ff9ac33b2b3d30f292c3a327c473 Mon Sep 17 00:00:00 2001
506 From: Julius Huelsmann <[email protected]>
507 Date: Sat, 10 Jun 2023 13:16:11 +0200
508 Subject: [PATCH 7/7] changed default config a bit
509
510 ---
511 config.def.h | 4 ++--
512 1 file changed, 2 insertions(+), 2 deletions(-)
513
514 diff --git a/config.def.h b/config.def.h
515 index cdfbaf1..779178f 100644
516 --- a/config.def.h
517 +++ b/config.def.h
518 @@ -94,7 +94,7 @@ char *termname = "st-256color";
519 unsigned int tabspaces = 8;
520
521 /* bg opacity */
522 -float alpha = 0.8, alphaUnfocused = 0.6;
523 +float alpha = 0.93, alphaUnfocused = 0.6;
524
525 /* Terminal colors (16 first used in escape sequence) */
526 static const char *colorname[] = {
527 @@ -135,7 +135,7 @@ unsigned int defaultfg = 7;
528 unsigned int defaultbg = 0;
529 unsigned int defaultcs = 256;
530 static unsigned int defaultrcs = 257;
531 -unsigned int bg = 17, bgUnfocused = 16;
532 +unsigned int bg = 0, bgUnfocused = 16;
533
534 /*
535 * Default shape of cursor
536 --
537 2.34.1
538
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.