diff -r a1102e52ead4 config.def.h
--- a/config.def.h	Wed Mar 24 23:37:46 2010 +0100
+++ b/config.def.h	Sat Apr 17 01:18:44 2010 +0000
@@ -27,4 +27,6 @@
 	{ MODKEY,                       XK_9,      move,           { .i = 8 } },
 	{ MODKEY,                       XK_0,      move,           { .i = 9 } },
 	{ MODKEY,                       XK_q,      killclient,     { 0 } },
+	{ MODKEY|Mod1Mask,		XK_l,	   list,	   { .v = (char *[]){ \
+		"lsw %s | dmenu -l 5", winid, NULL } } },
 };
diff -r a1102e52ead4 tabbed.c
--- a/tabbed.c	Wed Mar 24 23:37:46 2010 +0100
+++ b/tabbed.c	Sat Apr 17 01:18:44 2010 +0000
@@ -111,6 +111,7 @@
 static Bool isprotodel(Client *c);
 static void keypress(const XEvent *e);
 static void killclient(const Arg *arg);
+static void list(const Arg *arg);
 static void manage(Window win);
 static void maprequest(const XEvent *e);
 static void move(const Arg *arg);
@@ -564,6 +565,23 @@
 }
 
 void
+list(const Arg *arg) {
+	char buf[1024], *s;
+	Client *c;
+	FILE *l;
+
+	snprintf(buf, sizeof buf, ((char **)arg->v)[0], ((char **)arg->v)[1]);
+	l = popen(buf, "r");
+	s = fgets(buf, sizeof buf, l);
+	pclose(l);
+	if(!s)
+		return;
+	for(c = clients; c; c = c->next)
+		if(!strcmp(s, c->name))
+			focus(c);
+}
+
+void
 manage(Window w) {
 	updatenumlockmask();
 	{
