summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Lohmann <20h@r-36.net>2012-11-26 14:55:26 +0100
committerChristoph Lohmann <20h@r-36.net>2012-11-26 14:55:26 +0100
commit5e1c53ad3cecdfcb773e606a65ae853a524d8136 (patch)
tree7f7165cc71b1d3a29f7b0e6e4d85b96383c8bd98
parentcc1b72371ad1b5f78817f969fe9416dee8eed916 (diff)
Add the -f flag, which tells tabbed to run the given command again, in case
the last tab is closed.
-rw-r--r--tabbed.14
-rw-r--r--tabbed.c16
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);