Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-bulkill-20231029-9f88553.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-bulkill-20231029-9f88553.diff (2660B)
---
1 From 70a21457fdbcbcdf26efb1329dd29872b7fcd8e3 Mon Sep 17 00:00:00 2001
2 From: ysl2 <[email protected]>
3 Date: Sun, 29 Oct 2023 15:45:05 +0800
4 Subject: [PATCH] Give killclient an augument to control the beheviour: a…
5 == 0 for normal kill current client; arg.ui == 1 for kill other clients…
6 current tag (except current focusing client); arg.ui == 2 for kill all
7 clients in current tag (include focusing client).
8
9 ---
10 config.def.h | 2 ++
11 dwm.c | 30 ++++++++++++++++++++++++------
12 2 files changed, 26 insertions(+), 6 deletions(-)
13
14 diff --git a/config.def.h b/config.def.h
15 index 9efa774..d39e6dd 100644
16 --- a/config.def.h
17 +++ b/config.def.h
18 @@ -74,6 +74,8 @@ static const Key keys[] = {
19 { MODKEY, XK_Return, zoom, {0} …
20 { MODKEY, XK_Tab, view, {0} …
21 { MODKEY|ShiftMask, XK_c, killclient, {0} …
22 + { MODKEY|ControlMask, XK_c, killclient, {.ui = 1…
23 + { MODKEY|ShiftMask|ControlMask, XK_c, killclient, {.ui = 2…
24 { MODKEY, XK_t, setlayout, {.v …
25 { MODKEY, XK_f, setlayout, {.v …
26 { MODKEY, XK_m, setlayout, {.v …
27 diff --git a/dwm.c b/dwm.c
28 index f1d86b2..011744d 100644
29 --- a/dwm.c
30 +++ b/dwm.c
31 @@ -177,6 +177,7 @@ static void grabbuttons(Client *c, int focused);
32 static void grabkeys(void);
33 static void incnmaster(const Arg *arg);
34 static void keypress(XEvent *e);
35 +static void killthis(Client *c);
36 static void killclient(const Arg *arg);
37 static void manage(Window w, XWindowAttributes *wa);
38 static void mappingnotify(XEvent *e);
39 @@ -1013,21 +1014,38 @@ keypress(XEvent *e)
40 }
41
42 void
43 -killclient(const Arg *arg)
44 -{
45 - if (!selmon->sel)
46 - return;
47 - if (!sendevent(selmon->sel, wmatom[WMDelete])) {
48 +killthis(Client *c) {
49 + if (!sendevent(c, wmatom[WMDelete])) {
50 XGrabServer(dpy);
51 XSetErrorHandler(xerrordummy);
52 XSetCloseDownMode(dpy, DestroyAll);
53 - XKillClient(dpy, selmon->sel->win);
54 + XKillClient(dpy, c->win);
55 XSync(dpy, False);
56 XSetErrorHandler(xerror);
57 XUngrabServer(dpy);
58 }
59 }
60
61 +void
62 +killclient(const Arg *arg)
63 +{
64 + Client *c;
65 +
66 + if (!selmon->sel)
67 + return;
68 +
69 + if (!arg->ui || arg->ui == 0) {
70 + killthis(selmon->sel);
71 + return;
72 + }
73 +
74 + for (c = selmon->clients; c; c = c->next) {
75 + if (!ISVISIBLE(c) || (arg->ui == 1 && c == selmon->sel))
76 + continue;
77 + killthis(c);
78 + }
79 +}
80 +
81 void
82 manage(Window w, XWindowAttributes *wa)
83 {
84 --
85 2.20.1
86
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.