Commit Diff


commit - c56533615f84df801f10dedc4d6ff267e0e8df0a
commit + 38a43c2dcc2c75ece9ef1ac5cd82a8d05c7c519f
blob - 1c52d805466ebaaf5e1c50ff7b74cc7e8462070b
blob + 943e17b81046ec34927ecec9353d5a8574e081db
--- dwm.c
+++ dwm.c
@@ -363,8 +363,11 @@ checkotherwm(void) {
 void
 cleanup(void) {
 	Arg a = {.i = ~0};
+	Layout foo = { 0 };
+
 	close(STDIN_FILENO);
 	view(&a);
+	lt = &foo;
 	while(stack)
 		unmanage(stack);
 	if(dc.font.set)
@@ -1476,7 +1479,9 @@ togglefloating(const Arg *arg) {
 
 void
 togglelayout(const Arg *arg) {
-	if(++lt == &layouts[LENGTH(layouts)])
+	if(arg->v)
+		lt = (Layout *)arg->v;
+	else if(++lt == &layouts[LENGTH(layouts)])
 		lt = &layouts[0];
 	if(sel)
 		arrange();