From 5e1c53ad3cecdfcb773e606a65ae853a524d8136 Mon Sep 17 00:00:00 2001 From: Christoph Lohmann <20h@r-36.net> Date: Mon, 26 Nov 2012 14:55:26 +0100 Subject: Add the -f flag, which tells tabbed to run the given command again, in case the last tab is closed. --- tabbed.1 | 4 ++++ tabbed.c | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tabbed.1 b/tabbed.1 index 9d1bcaa..54013f6 100644 --- a/tabbed.1 +++ b/tabbed.1 @@ -24,6 +24,10 @@ tabbed will just print its xid and run no command. .B \-d detaches tabbed from the terminal and prints its XID to stdout. .TP +.B \-f +fill up tabbed again by spawning the provided command, when the last tab is +closed. +.TP .B \-h will print the usage of tabbed. .TP diff --git a/tabbed.c b/tabbed.c index fb44f6d..9910069 100644 --- a/tabbed.c +++ b/tabbed.c @@ -145,7 +145,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = { }; static int bh, wx, wy, ww, wh; static unsigned int numlockmask = 0; -static Bool running = True, nextfocus, doinitspawn = True; +static Bool running = True, nextfocus, doinitspawn = True, fillagain = False; static Display *dpy; static DC dc; static Atom wmatom[WMLast]; @@ -954,6 +954,11 @@ unmanage(int c) { focus(lastsel); } + if(nclients == 0) { + if(fillagain) + spawn(NULL); + } + drawbar(); XSync(dpy, False); } @@ -1023,7 +1028,7 @@ char *argv0; void usage(void) { - die("usage: %s [-dhsv] [-n name] [-r narg] command...\n", argv0); + die("usage: %s [-dfhsv] [-n name] [-r narg] command...\n", argv0); } int @@ -1034,6 +1039,9 @@ main(int argc, char *argv[]) { case 'd': detach = 1; break; + case 'f': + fillagain = 1; + break; case 'n': wmname = EARGF(usage()); break; @@ -1052,8 +1060,10 @@ main(int argc, char *argv[]) { usage(); } ARGEND; - if(argc < 1) + if(argc < 1) { doinitspawn = False; + fillagain = False; + } setcmd(argc, argv, replace); -- cgit v1.2.3