diff -r 9c5ad5303c3c dmenu.c
--- a/dmenu.c	Mon Mar 22 07:50:26 2010 +0000
+++ b/dmenu.c	Tue Mar 30 23:26:38 2010 +0000
@@ -766,6 +766,8 @@
 main(int argc, char *argv[]) {
 	unsigned int i;
 	Bool topbar = True;
+	Bool subwin = False;
+	int rev;
 
 	/* command line args */
 	for(i = 1; i < argc; i++)
@@ -775,6 +777,8 @@
 		}
 		else if(!strcmp(argv[i], "-b"))
 			topbar = False;
+		else if(!strcmp(argv[i], "-w"))
+			subwin = True;
 		else if(!strcmp(argv[i], "-l")) {
 			vlist = True;
 			calcoffsets = calcoffsetsv;
@@ -808,7 +812,10 @@
 	if(!(dpy = XOpenDisplay(NULL)))
 		eprint("dmenu: cannot open display\n");
 	screen = DefaultScreen(dpy);
-	root = RootWindow(dpy, screen);
+	if(subwin)
+		XGetInputFocus(dpy, &root, &rev);
+	else
+		root = RootWindow(dpy, screen);
 
 	if(isatty(STDIN_FILENO)) {
 		readstdin();
