summary refs log tree commit diff
path: root/kbfunc.c
diff options
context:
space:
mode:
authorian <ian>2007-11-28 16:35:52 +0000
committerian <ian>2007-11-28 16:35:52 +0000
commit8b3cd2243acdd75581b9d50c9ca9fb60b98cd494 (patch)
treee9e0997ff66575ac3faa75a94d2586464e895d67 /kbfunc.c
parentf14a3eeebff6e0a378b38629bc1202af7e74b420 (diff)
downloadcwm-8b3cd2243acdd75581b9d50c9ca9fb60b98cd494.tar.gz
cwm-8b3cd2243acdd75581b9d50c9ca9fb60b98cd494.tar.xz
cwm-8b3cd2243acdd75581b9d50c9ca9fb60b98cd494.zip
Add a "restart wm" function. ok oga@
Diffstat (limited to 'kbfunc.c')
-rw-r--r--kbfunc.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/kbfunc.c b/kbfunc.c
index 1275a83..ae9d9ad 100644
--- a/kbfunc.c
+++ b/kbfunc.c
@@ -263,6 +263,20 @@ kbfunc_exec(struct client_ctx *scratch, void *arg)
 	struct stat sb;
 	struct menu_q menuq;
 	struct menu *mi;
+	char *label;
+
+	int cmd = (int)arg;
+	switch(cmd) {
+		case CWM_EXEC_PROGRAM:
+			label = "exec";
+			break;
+		case CWM_EXEC_WM:
+			label = "wm";
+			break;
+		default:
+			err(1, "kbfunc_exec: invalid cmd %d", cmd);
+			/*NOTREACHED*/
+	}
 
 	if (getgroups(0, mygroups) == -1)
 		err(1, "getgroups failure");
@@ -320,8 +334,19 @@ kbfunc_exec(struct client_ctx *scratch, void *arg)
 	}
 
 	if ((mi = search_start(&menuq,
-		    search_match_exec, NULL, NULL, "exec", 1)) != NULL)
-		u_spawn(mi->text);
+		    search_match_exec, NULL, NULL, label, 1)) != NULL) {
+		switch (cmd) {
+			case CWM_EXEC_PROGRAM:
+				u_spawn(mi->text);
+				break;
+			case CWM_EXEC_WM:
+				exec_wm(mi->text);
+				break;
+			default:
+				err(1, "kb_func: egad, cmd changed value!");
+				break;
+		}
+	}
 
 	if (mi != NULL && mi->dummy)
 		xfree(mi);