JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
added SHCMD support for pipe-based commands due the new spawn() versio
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 1c52d80..7a6c591 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -51,6 +51,7 @@
 #define LENGTH(x)       (sizeof x / sizeof x[0])
 #define MAXTAGLEN       16
 #define MOUSEMASK       (BUTTONMASK|PointerMotionMask)
+#define SHCMD(cmd)      { .v = (char*[]){ "/bin/sh", "-c", cmd, NULL } }
 #define TAGMASK         ((int)((1LL << LENGTH(tags)) - 1))
 #define TEXTW(x)        (textnw(x, strlen(x)) + dc.font.height)
 
@@ -363,8 +364,11 @@ checkotherwm(void) {
 void
 cleanup(void) {
        Arg a = {.i = ~0};
+       Layout foo = { "", NULL };
+
        close(STDIN_FILENO);
        view(&a);
+       lt = &foo;
        while(stack)
                unmanage(stack);
        if(dc.font.set)
@@ -1476,7 +1480,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();