- /* init bar */
- bpos = BARPOS;
- wa.override_redirect = 1;
- wa.background_pixmap = ParentRelative;
- wa.event_mask = ButtonPressMask | ExposureMask;
- barwin = XCreateWindow(dpy, root, sx, sy, sw, bh, 0,
- DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
- CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
- XDefineCursor(dpy, barwin, cursor[CurNormal]);
- updatebarpos();
- XMapRaised(dpy, barwin);
- strcpy(stext, "dwm-"VERSION);
- dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
- dc.gc = XCreateGC(dpy, root, 0, 0);
- XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
- if(!dc.font.set)
- XSetFont(dpy, dc.gc, dc.font.xfont->fid);
-
- /* multihead support */
- selscreen = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
+ monitors = emallocz(s*sizeof(Monitor));
+ mcount = s;
+
+ for(i = 0; i < s; i++) {
+ /* init geometry */
+ if (mcount != 1) {
+ monitors[i].sx = info[i].x_org;
+ monitors[i].sy = info[i].y_org;
+ monitors[i].sw = info[i].width;
+ monitors[i].sh = info[i].height;
+ }
+ else {
+ monitors[i].sx = 0;
+ monitors[i].sy = 0;
+ monitors[i].sw = DisplayWidth(dpy, screen);
+ monitors[i].sh = DisplayHeight(dpy, screen);
+ }
+
+ monitors[i].id = i;
+ monitors[i].seltags = emallocz(LENGTH(tags)*sizeof(char*));
+ monitors[i].prevtags = emallocz(LENGTH(tags)*sizeof(char*));
+
+ memcpy(monitors[i].seltags, seltags, sizeof seltags);
+ memcpy(monitors[i].prevtags, seltags, sizeof seltags);
+
+ /* init appearance */
+ monitors[i].dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR);
+ monitors[i].dc.norm[ColBG] = getcolor(NORMBGCOLOR);
+ monitors[i].dc.norm[ColFG] = getcolor(NORMFGCOLOR);
+ monitors[i].dc.sel[ColBorder] = getcolor(SELBORDERCOLOR);
+ monitors[i].dc.sel[ColBG] = getcolor(SELBGCOLOR);
+ monitors[i].dc.sel[ColFG] = getcolor(SELFGCOLOR);
+ initfont(&(monitors[i]), FONT);
+ monitors[i].dc.h = bh = monitors[i].dc.font.height + 2;
+
+ /* init layouts */
+ monitors[i].mwfact = MWFACT;
+ monitors[i].layout = &layouts[0];
+ for(blw = k = 0; k < LENGTH(layouts); k++) {
+ j = textw(&monitors[i], layouts[k].symbol);
+ if(j > blw)
+ blw = j;
+ }
+
+ bpos = BARPOS;
+ wa.override_redirect = 1;
+ wa.background_pixmap = ParentRelative;
+ wa.event_mask = ButtonPressMask | ExposureMask;
+
+ /* init bars */
+ monitors[i].barwin = XCreateWindow(dpy, root, monitors[i].sx, monitors[i].sy, monitors[i].sw, bh, 0,
+ DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
+ CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
+ XDefineCursor(dpy, monitors[i].barwin, cursor[CurNormal]);
+ updatebarpos(&monitors[i]);
+ XMapRaised(dpy, monitors[i].barwin);
+ strcpy(stext, "dwm-"VERSION);
+ monitors[i].dc.drawable = XCreatePixmap(dpy, root, monitors[i].sw, bh, DefaultDepth(dpy, screen));
+ g = XCreateGC(dpy, root, 0, 0);
+ monitors[i].dc.gc = XCreateGC(dpy, root, 0, 0);
+ XSetLineAttributes(dpy, monitors[i].dc.gc, 1, LineSolid, CapButt, JoinMiter);
+ if(!monitors[i].dc.font.set)
+ XSetFont(dpy, monitors[i].dc.gc, monitors[i].dc.font.xfont->fid);
+ }