make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients

This commit is contained in:
Anselm R Garbe
2008-05-19 15:05:46 +01:00
parent 4a5c8d84db
commit f22d047d41
3 changed files with 37 additions and 16 deletions

39
dwm.c

@ -39,6 +39,9 @@
#include <X11/Xlib.h>
#include <X11/Xproto.h>
#include <X11/Xutil.h>
#ifdef XINERAMA
#include <X11/extensions/Xinerama.h>
#endif
/* macros */
#define MAX(a, b) ((a) > (b) ? (a) : (b))
@ -1579,22 +1582,32 @@ updatebar(void) {
void
updategeom(void) {
unsigned int i;
#ifdef CUSTOMGEOM /* define your own if you are Xinerama user */
CUSTOMGEOM
#else
/* bar geometry*/
bx = 0;
by = showbar ? (topbar ? 0 : sh - bh) : -bh;
bw = sw;
int i;
#ifdef XINERAMA
XineramaScreenInfo *info = NULL;
/* window area geometry */
wx = sx;
wy = showbar && topbar ? sy + bh : sy;
ww = sw;
wh = showbar ? sh - bh : sh;
if(XineramaIsActive(dpy)) {
info = XineramaQueryScreens(dpy, &i);
wx = info[0].x_org;
wy = showbar && topbar ? info[0].y_org + info[0].height + bh : info[0].y_org;
ww = info[0].width;
wh = showbar ? info[0].height - bh : info[0].height;
XFree(info);
}
else
#endif
{
wx = sx;
wy = showbar && topbar ? sy + bh : sy;
ww = sw;
wh = showbar ? sh - bh : sh;
}
/* bar geometry*/
bx = wx;
by = showbar ? (topbar ? 0 : wy + wh) : -bh;
bw = ww;
/* update layout geometries */
for(i = 0; i < LENGTH(layouts); i++)