Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-sizehints-ruled-6.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-sizehints-ruled-6.2.diff (2907B)
---
1 From c605c7f4c3f421ef5b6f12031b07abe713cd8183 Mon Sep 17 00:00:00 2001
2 From: MLquest8 <[email protected]>
3 Date: Sun, 14 Jun 2020 13:06:31 +0400
4 Subject: [PATCH] resizehints-ruled. Modified to properly read the rules …
5 apply as needed. Behavior for clients that aren't found in rules struct…
6 remains the same.
7
8 ---
9 config.def.h | 2 ++
10 dwm.c | 34 +++++++++++++++++++++++++++++++++-
11 2 files changed, 35 insertions(+), 1 deletion(-)
12
13 diff --git a/config.def.h b/config.def.h
14 index 1c0b587..1d55286 100644
15 --- a/config.def.h
16 +++ b/config.def.h
17 @@ -29,6 +29,8 @@ static const Rule rules[] = {
18 /* class instance title tags mask isfloating …
19 { "Gimp", NULL, NULL, 0, 1, …
20 { "Firefox", NULL, NULL, 1 << 8, 0, …
21 + { "st", NULL, NULL, 0, 0, …
22 + { "St", NULL, NULL, 0, 0, …
23 };
24
25 /* layout(s) */
26 diff --git a/dwm.c b/dwm.c
27 index 9fd0286..f0f569e 100644
28 --- a/dwm.c
29 +++ b/dwm.c
30 @@ -149,6 +149,7 @@ static void arrangemon(Monitor *m);
31 static void attach(Client *c);
32 static void attachstack(Client *c);
33 static void buttonpress(XEvent *e);
34 +static void checkfloatingrules(Client *c);
35 static void checkotherwm(void);
36 static void cleanup(void);
37 static void cleanupmon(Monitor *mon);
38 @@ -456,6 +457,31 @@ buttonpress(XEvent *e)
39 buttons[i].func(click == ClkTagBar && buttons[i…
40 }
41
42 +void
43 +checkfloatingrules(Client *c)
44 +{
45 + const char *class, *instance;
46 + unsigned int i;
47 + const Rule *r;
48 + XClassHint ch = { NULL, NULL };
49 +
50 + XGetClassHint(dpy, c->win, &ch);
51 + class = ch.res_class ? ch.res_class : broken;
52 + instance = ch.res_name ? ch.res_name : broken;
53 +
54 + for (i = 0; i < LENGTH(rules); i++) {
55 + r = &rules[i];
56 + if ((!r->title || strstr(c->name, r->title))
57 + && (!r->class || strstr(class, r->class))
58 + && (!r->instance || strstr(instance, r->instance)))
59 + c->isfloating = r->isfloating;
60 + }
61 + if (ch.res_class)
62 + XFree(ch.res_class);
63 + if (ch.res_name)
64 + XFree(ch.res_name);
65 +}
66 +
67 void
68 checkotherwm(void)
69 {
70 @@ -1952,7 +1978,7 @@ updatesizehints(Client *c)
71
72 if (!XGetWMNormalHints(dpy, c->win, &size, &msize))
73 /* size is uninitialized, ensure that size.flags aren't…
74 - size.flags = PSize;
75 + size.flags = 0;
76 if (size.flags & PBaseSize) {
77 c->basew = size.base_width;
78 c->baseh = size.base_height;
79 @@ -1984,6 +2010,12 @@ updatesizehints(Client *c)
80 c->maxa = (float)size.max_aspect.x / size.max_aspect.y;
81 } else
82 c->maxa = c->mina = 0.0;
83 + if(size.flags & PSize) {
84 + c->basew = size.base_width;
85 + c->baseh = size.base_height;
86 + c->isfloating = 1;
87 + }
88 + checkfloatingrules(c);
89 c->isfixed = (c->maxw && c->maxh && c->maxw == c->minw && c->ma…
90 }
91
92 --
93 2.26.2
94
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.