dwm-rulerefresher-6.2.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-rulerefresher-6.2.diff (2156B) | |
--- | |
1 From 5728e3bc46ef38cfcc0f2cbf04626a28ecc57379 Mon Sep 17 00:00:00 2001 | |
2 From: Lars Niesen <[email protected]> | |
3 Date: Thu, 9 Dec 2021 13:40:17 +0100 | |
4 Subject: [PATCH] rulerefresher | |
5 | |
6 --- | |
7 dwm.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ | |
8 1 file changed, 50 insertions(+) | |
9 | |
10 diff --git a/dwm.c b/dwm.c | |
11 index 4465af1..5f8ba9c 100644 | |
12 --- a/dwm.c | |
13 +++ b/dwm.c | |
14 @@ -223,6 +223,7 @@ static int updategeom(void); | |
15 static void updatenumlockmask(void); | |
16 static void updatesizehints(Client *c); | |
17 static void updatestatus(void); | |
18 +static void updaterules(Client *c); | |
19 static void updatetitle(Client *c); | |
20 static void updatewindowtype(Client *c); | |
21 static void updatewmhints(Client *c); | |
22 @@ -1237,6 +1238,7 @@ propertynotify(XEvent *e) | |
23 } | |
24 if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWM… | |
25 updatetitle(c); | |
26 + updaterules(c); | |
27 if (c == c->mon->sel) | |
28 drawbar(c->mon); | |
29 } | |
30 @@ -1992,6 +1994,54 @@ updatestatus(void) | |
31 drawbar(selmon); | |
32 } | |
33 | |
34 +void | |
35 +updaterules(Client *c) | |
36 +{ | |
37 + //applyrules(c) | |
38 + const char *class, *instance; | |
39 + unsigned int i; | |
40 + const Rule *r; | |
41 + Monitor *m; | |
42 + XClassHint ch = { NULL, NULL }; | |
43 + | |
44 + /* rule matching */ | |
45 + XGetClassHint(dpy, c->win, &ch); | |
46 + class = ch.res_class ? ch.res_class : broken; | |
47 + instance = ch.res_name ? ch.res_name : broken; | |
48 + char found_rule = 0; | |
49 + | |
50 + for (i = 0; i < LENGTH(rules); i++) { | |
51 + r = &rules[i]; | |
52 + if ((!r->title || strstr(c->name, r->title)) | |
53 + && (!r->class || strstr(class, r->class)) | |
54 + && (!r->instance || strstr(instance, r->instance))) | |
55 + { | |
56 + c->isfloating = r->isfloating; | |
57 + | |
58 + if(!found_rule) | |
59 + { | |
60 + c->tags=0; | |
61 + found_rule=1; | |
62 + } | |
63 + c->tags |= r->tags; | |
64 + for (m = mons; m && m->num != r->monitor; m = m->next); | |
65 + if (m) | |
66 + c->mon = m; | |
67 + } | |
68 + } | |
69 + if (ch.res_class) | |
70 + XFree(ch.res_class); | |
71 + if (ch.res_name) | |
72 + XFree(ch.res_name); | |
73 + c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagse… | |
74 + | |
75 + // end apply rules | |
76 + if (c->isfloating) | |
77 + resize(c, c->x, c->y, | |
78 + c->w, c->h, 0); | |
79 + arrange(c->mon); | |
80 +} | |
81 + | |
82 void | |
83 updatetitle(Client *c) | |
84 { | |
85 -- | |
86 2.34.1 | |
87 |