dwm-killunsel-ceac8c91ff.diff (1667B)
1 diff --git a/config.def.h b/config.def.h 2 index a9ac303..6496426 100644 3 --- a/config.def.h 4 +++ b/config.def.h 5 @@ -73,6 +73,7 @@ static Key keys[] = { 6 { MODKEY, XK_Return, zoom, {0} }, 7 { MODKEY, XK_Tab, view, {0} }, 8 { MODKEY|ShiftMask, XK_c, killclient, {0} }, 9 + { MODKEY|ShiftMask, XK_x, killunsel, {0} }, 10 { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, 11 { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, 12 { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, 13 diff --git a/dwm.c b/dwm.c 14 index a5ce993..a310c29 100644 15 --- a/dwm.c 16 +++ b/dwm.c 17 @@ -178,6 +178,7 @@ static void grabkeys(void); 18 static void incnmaster(const Arg *arg); 19 static void keypress(XEvent *e); 20 static void killclient(const Arg *arg); 21 +static void killunsel(const Arg *arg); 22 static void manage(Window w, XWindowAttributes *wa); 23 static void mappingnotify(XEvent *e); 24 static void maprequest(XEvent *e); 25 @@ -1017,6 +1018,29 @@ killclient(const Arg *arg) 26 } 27 28 void 29 +killunsel(const Arg *arg) 30 +{ 31 + Client *i = NULL; 32 + 33 + if (!selmon->sel) 34 + return; 35 + 36 + for (i = selmon->clients; i; i = i->next) { 37 + if (ISVISIBLE(i) && i != selmon->sel) { 38 + if (!sendevent(i, wmatom[WMDelete])) { 39 + XGrabServer(dpy); 40 + XSetErrorHandler(xerrordummy); 41 + XSetCloseDownMode(dpy, DestroyAll); 42 + XKillClient(dpy, i->win); 43 + XSync(dpy, False); 44 + XSetErrorHandler(xerror); 45 + XUngrabServer(dpy); 46 + } 47 + } 48 + } 49 +} 50 + 51 +void 52 manage(Window w, XWindowAttributes *wa) 53 { 54 Client *c, *t = NULL;