+ for(blw = i = 0; i < LENGTH(layouts); i++) {
+ i = textw(layouts[i].symbol);
+ if(i > blw)
+ blw = i;
+ }
+
+ seltags = emallocz(TAGSZ);
+ prevtags = emallocz(TAGSZ);
+
+ /* check, if vtags need assistance, because there is only 1 view */
+ if(nviews == 1)
+ for(i = 0; i < LENGTH(tags); i++)
+ vtags[i] = 0;
+
+ for(i = 0; i < nviews; i++) {
+ /* init geometry */
+ v = &views[i];
+ v->id = i;
+
+ /* select first tag of view */
+ j = firstag(v);
+ seltags[j] = prevtags[j] = True;
+
+ if(info) {
+
+#if defined(AIM_XINERAMA)
+v->w = DisplayWidth(dpy, screen) / 2;
+v->x = (i == 0) ? 0 : v->w;
+v->y = 0;
+v->h = DisplayHeight(dpy, screen);
+#else
+ v->x = info[i].x_org;
+ v->y = info[i].y_org;
+ v->w = info[i].width;
+ v->h = info[i].height;
+#endif
+ }
+ else {
+ v->x = 0;
+ v->y = 0;
+ v->w = DisplayWidth(dpy, screen);
+ v->h = DisplayHeight(dpy, screen);
+ }
+
+ /* init layouts */
+ v->mwfact = MWFACT;
+ v->layout = &layouts[0];
+
+ // TODO: bpos per screen?
+ bpos = BARPOS;
+ wa.override_redirect = 1;
+ wa.background_pixmap = ParentRelative;
+ wa.event_mask = ButtonPressMask|ExposureMask;
+
+ /* init bars */
+ v->barwin = XCreateWindow(dpy, root, v->x, v->y, v->w, bh, 0,
+ DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
+ CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
+ XDefineCursor(dpy, v->barwin, cursor[CurNormal]);
+ updatebarpos(v);
+ XMapRaised(dpy, v->barwin);
+ strcpy(stext, "dwm-"VERSION);
+
+ /* EWMH support per view */
+ XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
+ PropModeReplace, (unsigned char *) netatom, NetLast);
+
+ /* select for events */
+ wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask
+ |EnterWindowMask|LeaveWindowMask|StructureNotifyMask;
+ XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa);
+ XSelectInput(dpy, root, wa.event_mask);
+
+ drawbar(v);
+ }
+ if(info)
+ XFree(info);
+
+ selview = viewat();
+
+ /* grab keys */
+ grabkeys();