--- tabbed.1 | 5 +++++ tabbed.c | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tabbed.1 b/tabbed.1 index 874e306..bc28b8c 100644 --- a/tabbed.1 +++ b/tabbed.1 _AT_@ -5,6 +5,7 @@ tabbed \- generic tabbed interface .B tabbed .RB [ \-c ] .RB [ \-d ] +.RB [ \-k ] .RB [ \-s ] .RB [ \-v ] .RB [ \-g _AT_@ -56,6 +57,10 @@ See .BR XParseGeometry (3) for further details. .TP +.B \-k +close foreground tabbed client (instead of tabbed and all clients) when +WM_DELETE_WINDOW is sent. +.TP .BI \-n " name" will set the WM_CLASS attribute to .I name. diff --git a/tabbed.c b/tabbed.c index a9050ae..9a44795 100644 --- a/tabbed.c +++ b/tabbed.c _AT_@ -155,7 +155,8 @@ static void (*handler[LASTEvent]) (const XEvent *) = { static int bh, wx, wy, ww, wh; static unsigned int numlockmask; static Bool running = True, nextfocus, doinitspawn = True, - fillagain = False, closelastclient = False; + fillagain = False, closelastclient = False, + killclientsfirst = False; static Display *dpy; static DC dc; static Atom wmatom[WMLast]; _AT_@ -236,8 +237,13 @@ clientmessage(const XEvent *e) const XClientMessageEvent *ev = &e->xclient; if (ev->message_type == wmatom[WMProtocols] && - ev->data.l[0] == wmatom[WMDelete]) + ev->data.l[0] == wmatom[WMDelete]) { + if (nclients > 1 && killclientsfirst) { + killclient(0); + return; + } running = False; + } } void _AT_@ -1247,7 +1253,7 @@ xsettitle(Window w, const char *str) void usage(void) { - die("usage: %s [-dfsv] [-g geometry] [-n name] [-p [s+/-]pos]\n" + die("usage: %s [-dfksv] [-g geometry] [-n name] [-p [s+/-]pos]\n" " [-r narg] [-o color] [-O color] [-t color] [-T color]\n" " [-u color] [-U color] command...\n", argv0); } _AT_@ -1273,6 +1279,9 @@ main(int argc, char *argv[]) case 'g': geometry = EARGF(usage()); break; + case 'k': + killclientsfirst = True; + break; case 'n': wmname = EARGF(usage()); break; -- 2.4.10Received on Mon Mar 21 2016 - 03:16:12 CET
This archive was generated by hypermail 2.3.0 : Mon Mar 21 2016 - 03:24:15 CET