commit c79e3392413da488eecb2769473989d0c2c861c9
parent 3d12c416b82e4dd0b41d627752a165cbfb96d59a
Author: Christoph Lohmann <20h@r-36.net>
Date:   Thu,  9 Feb 2012 17:39:33 +0100
Allow no automatic spawning of the command.
Diffstat:
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/tabbed.1 b/tabbed.1
@@ -4,16 +4,27 @@ tabbed \- generic tabbed interface
 .SH SYNOPSIS
 .B tabbed
 .RB [ \-d ]
+.RB [ \-h ]
+.RB [ \-s ]
 .RB [ \-v ]
 .IR command ...
 .SH DESCRIPTION
 .B tabbed
-is a simple tabbed container for applications which support XEmbed.
+is a simple tabbed container for applications which support XEmbed. Tabbed
+will then run the provides command with the xid of tabbed as appended
+argument. (See EXAMPLES.) The automatic spawning of the command can be
+disabled by provoding the -s parameter. 
 .SH OPTIONS
 .TP
 .B \-d
 detaches tabbed from the terminal and prints its XID to stdout.
 .TP
+.B \-h
+will print the usage of tabbed.
+.TP
+.B \-s
+will disable automatic spawning of the command.
+.TP
 .B \-v
 prints version information to stderr, then exits.
 .SH USAGE
diff --git a/tabbed.c b/tabbed.c
@@ -141,7 +141,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = {
 };
 static int bh, wx, wy, ww, wh;
 static unsigned int numlockmask = 0;
-static Bool running = True, nextfocus;
+static Bool running = True, nextfocus, doinitspawn = True;
 static Display *dpy;
 static DC dc;
 static Atom wmatom[WMLast], xembedatom;
@@ -687,7 +687,8 @@ run(void) {
 	/* main event loop */
 	XSync(dpy, False);
 	drawbar();
-	spawn(NULL);
+	if(doinitspawn == True)
+		spawn(NULL);
 	while(running) {
 		XNextEvent(dpy, &ev);
 		if(handler[ev.type])
@@ -862,6 +863,12 @@ xerror(Display *dpy, XErrorEvent *ee) {
 	return xerrorxlib(dpy, ee); /* may call exit */
 }
 
+void
+usage(char *argv0)
+{
+	die("usage: %s [-dhsv] command...\n", argv0);
+}
+
 int
 main(int argc, char *argv[]) {
 	int i, detach = 0;
@@ -871,11 +878,15 @@ main(int argc, char *argv[]) {
 			die("tabbed-"VERSION", © 2009-2011 tabbed engineers, see LICENSE for details\n");
 		else if(!strcmp("-d", argv[i]))
 			detach = 1;
+		else if(!strcmp("-s", argv[i]))
+			doinitspawn = False;
+		else if(!strcmp("-h", argv[i]))
+			usage(argv[0]);
 		else
 			setcmd(argc-i, argv+i);
 	}
 	if(!cmd)
-		die("usage: tabbed [-d] [-v] command...\n");
+		usage(argv[0]);
 	if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
 		fprintf(stderr, "tabbed: no locale support\n");
 	if(!(dpy = XOpenDisplay(NULL)))