dwm-bulkill-safe-20231029-9f88553.diff - sites - public wiki contents of suckle… | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-bulkill-safe-20231029-9f88553.diff (2673B) | |
--- | |
1 From c40d70e238b7e5e8ebfd16b435c56af55a541912 Mon Sep 17 00:00:00 2001 | |
2 From: ysl2 <[email protected]> | |
3 Date: Sun, 29 Oct 2023 15:39:46 +0800 | |
4 Subject: [PATCH] Bulk kill: arg.ui == 0 for normal kill current client; … | |
5 == 1 for kill other clients in current tag (except current focusing cli… | |
6 arg.ui == 2 for kill all clients in current tag (include focusing clien… | |
7 | |
8 --- | |
9 bulkill.c | 35 +++++++++++++++++++++++++++++++++++ | |
10 config.def.h | 3 +++ | |
11 2 files changed, 38 insertions(+) | |
12 create mode 100644 bulkill.c | |
13 | |
14 diff --git a/bulkill.c b/bulkill.c | |
15 new file mode 100644 | |
16 index 0000000..732852e | |
17 --- /dev/null | |
18 +++ b/bulkill.c | |
19 @@ -0,0 +1,35 @@ | |
20 +static void killthis(Client *c); | |
21 +static void bulkill(const Arg *arg); | |
22 + | |
23 +void | |
24 +killthis(Client *c) { | |
25 + if (!sendevent(c, wmatom[WMDelete])) { | |
26 + XGrabServer(dpy); | |
27 + XSetErrorHandler(xerrordummy); | |
28 + XSetCloseDownMode(dpy, DestroyAll); | |
29 + XKillClient(dpy, c->win); | |
30 + XSync(dpy, False); | |
31 + XSetErrorHandler(xerror); | |
32 + XUngrabServer(dpy); | |
33 + } | |
34 +} | |
35 + | |
36 +void | |
37 +bulkill(const Arg *arg) | |
38 +{ | |
39 + Client *c; | |
40 + | |
41 + if (!selmon->sel) | |
42 + return; | |
43 + | |
44 + if (!arg->ui || arg->ui == 0) { | |
45 + killthis(selmon->sel); | |
46 + return; | |
47 + } | |
48 + | |
49 + for (c = selmon->clients; c; c = c->next) { | |
50 + if (!ISVISIBLE(c) || (arg->ui == 1 && c == selmon->sel)) | |
51 + continue; | |
52 + killthis(c); | |
53 + } | |
54 +} | |
55 diff --git a/config.def.h b/config.def.h | |
56 index 9efa774..28cfd78 100644 | |
57 --- a/config.def.h | |
58 +++ b/config.def.h | |
59 @@ -60,6 +60,7 @@ static char dmenumon[2] = "0"; /* component of dmenucm… | |
60 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", d… | |
61 static const char *termcmd[] = { "st", NULL }; | |
62 | |
63 +#include "bulkill.c" | |
64 static const Key keys[] = { | |
65 /* modifier key function argu… | |
66 { MODKEY, XK_p, spawn, {.v … | |
67 @@ -74,6 +75,8 @@ static const Key keys[] = { | |
68 { MODKEY, XK_Return, zoom, {0} … | |
69 { MODKEY, XK_Tab, view, {0} … | |
70 { MODKEY|ShiftMask, XK_c, killclient, {0} … | |
71 + { MODKEY|ControlMask, XK_c, bulkill, {.ui = 1… | |
72 + { MODKEY|ShiftMask|ControlMask, XK_c, bulkill, {.ui = 2… | |
73 { MODKEY, XK_t, setlayout, {.v … | |
74 { MODKEY, XK_f, setlayout, {.v … | |
75 { MODKEY, XK_m, setlayout, {.v … | |
76 -- | |
77 2.20.1 | |
78 |