commit 5e1c53ad3cecdfcb773e606a65ae853a524d8136
parent cc1b72371ad1b5f78817f969fe9416dee8eed916
Author: Christoph Lohmann <20h@r-36.net>
Date:   Mon, 26 Nov 2012 14:55:26 +0100
Add the -f flag, which tells tabbed to run the given command again, in case
the last tab is closed.
Diffstat:
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git 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
@@ -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);