JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
made Xinerama screen index customizable
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 04ae223..dfc452a 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -224,13 +224,11 @@ static Client *stack = NULL;
 static Cursor cursor[CurLast];
 static Display *dpy;
 static DC dc = {0};
+static Layout *lt = NULL;
 static Window root, barwin;
-
 /* configuration, allows nested code to access above variables */
 #include "config.h"
 
-static Layout *lt = layouts;
-
 /* compile-time check if all tags fit into an uint bit array. */
 struct NumTags { char limitexceeded[sizeof(uint) * 8 < LENGTH(tags) ? -1 : 1]; };
 
@@ -326,9 +324,9 @@ buttonpress(XEvent *e) {
                        }
                }
                if(ev->x < x + blw) {
-                       if(ev->button == Button1) 
+                       if(ev->button == Button1)
                                togglelayout(NULL);
-                       else if(ev->button == Button3) 
+                       else if(ev->button == Button3)
                                togglemax(NULL);
                }
        }
@@ -664,7 +662,7 @@ focusstack(const Arg *arg) {
                for(i = clients; i != sel; i = i->next)
                        if (!i->isbanned)
                                c = i;
-               if(!c) 
+               if(!c)
                        for(; i; i = i->next)
                                if (!i->isbanned)
                                        c = i;
@@ -1325,6 +1323,7 @@ setup(void) {
        sw = DisplayWidth(dpy, screen);
        sh = DisplayHeight(dpy, screen);
        bh = dc.font.height + 2;
+       lt = layouts;
        updategeom();
 
        /* init atoms */
@@ -1479,7 +1478,7 @@ togglefloating(const Arg *arg) {
 
 void
 togglelayout(const Arg *arg) {
-       if(arg->v)
+       if(arg && arg->v)
                lt = (Layout *)arg->v;
        else if(++lt == &layouts[LENGTH(layouts)])
                lt = &layouts[0];
@@ -1555,10 +1554,10 @@ updategeom(void) {
        /* window area geometry */
        if(XineramaIsActive(dpy)) {
                info = XineramaQueryScreens(dpy, &i);
-               wx = info[0].x_org;
-               wy = showbar && topbar ? info[0].y_org + bh : info[0].y_org;
-               ww = info[0].width;
-               wh = showbar ? info[0].height - bh : info[0].height;
+               wx = info[xidx].x_org;
+               wy = showbar && topbar ?  info[xidx].y_org + bh : info[xidx].y_org;
+               ww = info[xidx].width;
+               wh = showbar ? info[xidx].height - bh : info[xidx].height;
                XFree(info);
        }
        else