dwm-notallowed-6.2.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-notallowed-6.2.diff (2569B) | |
--- | |
1 diff -up dwm-6.2.orig/config.def.h dwm-6.2/config.def.h | |
2 --- dwm-6.2.orig/config.def.h 2021-04-17 17:58:27.803010601 +0200 | |
3 +++ dwm-6.2/config.def.h 2021-04-19 09:04:26.224804870 +0200 | |
4 @@ -26,9 +26,9 @@ static const Rule rules[] = { | |
5 * WM_CLASS(STRING) = instance, class | |
6 * WM_NAME(STRING) = title | |
7 */ | |
8 - /* class instance title tags mask isfloating … | |
9 - { "Gimp", NULL, NULL, 0, 1, … | |
10 - { "Firefox", NULL, NULL, 1 << 8, 0, … | |
11 + /* class instance title tags mask isfloating … | |
12 + { "Gimp", NULL, NULL, 0, 1, … | |
13 + { "Firefox", NULL, NULL, 1 << 8, 0, … | |
14 }; | |
15 | |
16 /* layout(s) */ | |
17 diff -up dwm-6.2.orig/dwm.c dwm-6.2/dwm.c | |
18 --- dwm-6.2.orig/dwm.c 2021-04-17 17:58:27.803010601 +0200 | |
19 +++ dwm-6.2/dwm.c 2021-04-19 09:03:42.571206643 +0200 | |
20 @@ -92,7 +92,7 @@ struct Client { | |
21 int basew, baseh, incw, inch, maxw, maxh, minw, minh; | |
22 int bw, oldbw; | |
23 unsigned int tags; | |
24 - int isfixed, isfloating, isurgent, neverfocus, oldstate, isfull… | |
25 + int isfixed, isfloating, isurgent, neverfocus, oldstate, isfull… | |
26 Client *next; | |
27 Client *snext; | |
28 Monitor *mon; | |
29 @@ -139,6 +139,7 @@ typedef struct { | |
30 unsigned int tags; | |
31 int isfloating; | |
32 int monitor; | |
33 + int notallowed; | |
34 } Rule; | |
35 | |
36 /* function declarations */ | |
37 @@ -297,6 +298,10 @@ applyrules(Client *c) | |
38 && (!r->class || strstr(class, r->class)) | |
39 && (!r->instance || strstr(instance, r->instance))) | |
40 { | |
41 + if (r->notallowed) { | |
42 + c->notallowed = r->notallowed; | |
43 + break; | |
44 + } | |
45 c->isfloating = r->isfloating; | |
46 c->tags |= r->tags; | |
47 for (m = mons; m && m->num != r->monitor; m = m… | |
48 @@ -1029,6 +1034,7 @@ manage(Window w, XWindowAttributes *wa) | |
49 c->w = c->oldw = wa->width; | |
50 c->h = c->oldh = wa->height; | |
51 c->oldbw = wa->border_width; | |
52 + c->notallowed = 0; | |
53 | |
54 updatetitle(c); | |
55 if (XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(tr… | |
56 @@ -1037,6 +1043,21 @@ manage(Window w, XWindowAttributes *wa) | |
57 } else { | |
58 c->mon = selmon; | |
59 applyrules(c); | |
60 + if (c->notallowed) { | |
61 + | |
62 + XMapWindow(dpy, c->win); | |
63 + if (!sendevent(c, wmatom[WMDelete])) { | |
64 + XGrabServer(dpy); | |
65 + XSetErrorHandler(xerrordummy); | |
66 + XSetCloseDownMode(dpy, DestroyAll); | |
67 + XKillClient(dpy, c->win); | |
68 + XSync(dpy, False); | |
69 + XSetErrorHandler(xerror); | |
70 + XUngrabServer(dpy); | |
71 + } | |
72 + | |
73 + return; | |
74 + } | |
75 } | |
76 | |
77 if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw) |