monocle goes mainstream
authorAnselm R Garbe <garbeam@gmail.com>
Tue, 4 Mar 2008 18:58:23 +0000 (18:58 +0000)
committerAnselm R Garbe <garbeam@gmail.com>
Tue, 4 Mar 2008 18:58:23 +0000 (18:58 +0000)
config.def.h
dwm.c

index 8dee5e1..11993da 100644 (file)
@@ -12,7 +12,7 @@
 #define SELFGCOLOR             "#ffffff"
 
 /* old */
-const char tags[][MAXTAGLEN]     = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
+const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 
 Rule rules[] = {
        /* class:instance:title substr  tags ref        isfloating */
@@ -30,6 +30,7 @@ Layout layouts[] = {
        /* symbol               function */
        { "[]=",                tile }, /* first entry is default */
        { "><>",                floating },
+       { "[M]",                monocle },
 };
 
 /* key definitions */
@@ -46,6 +47,7 @@ Key keys[] = {
        { MODKEY,                       XK_h,           setmwfact,      "-0.05" },
        { MODKEY,                       XK_l,           setmwfact,      "+0.05" },
        { MODKEY,                       XK_r,           reapply,        NULL },
+       { MODKEY,                       XK_m,           setlayout,      "[M]" },
        { MODKEY,                       XK_Return,      zoom,           NULL },
        { MODKEY,                       XK_Tab,         viewprevtag,    NULL },
        { MODKEY|ShiftMask,             XK_space,       togglefloating, NULL },
diff --git a/dwm.c b/dwm.c
index 897eeb4..b417167 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -153,6 +153,7 @@ void killclient(const char *arg);
 void manage(Window w, XWindowAttributes *wa);
 void mappingnotify(XEvent *e);
 void maprequest(XEvent *e);
+void monocle(void);
 void movemouse(Client *c);
 Client *nexttiled(Client *c);
 void propertynotify(XEvent *e);
@@ -1071,6 +1072,16 @@ maprequest(XEvent *e) {
                manage(ev->window, &wa);
 }
 
+void
+monocle(void) {
+       Client *c;
+
+       domwfact = dozoom = False;
+       for(c = clients; c; c = c->next)
+               if(isvisible(c))
+                       resize(c, wax, way, waw - 2 * c->border, wah - 2 * c->border, RESIZEHINTS);
+}
+
 void
 movemouse(Client *c) {
        int x1, y1, ocx, ocy, di, nx, ny;
@@ -1412,7 +1423,7 @@ setlayout(const char *arg) {
        }
        else {
                for(i = 0; i < LENGTH(layouts); i++)
-                       if(arg == layouts[i].symbol)
+                       if(!strcmp(arg, layouts[i].symbol))
                                break;
                if(i == LENGTH(layouts))
                        return;