X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib
+# Xinerama, uncomment if you don't want it
+XINERAMALIBS = -L${X11LIB} -lXinerama
+XINERAMAFLAGS = -DXINERAMA
+
# includes and libs
INCS = -I. -I/usr/include -I${X11INC}
-LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
+LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${XINERAMALIBS}
# flags
-CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\"
+CPPFLAGS = -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
+CFLAGS = -Os ${INCS} ${CPPFLAGS}
LDFLAGS = -s ${LIBS}
-#CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
+#CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} ${CPPFLAGS}
#LDFLAGS = -g ${LIBS}
# Solaris
#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))
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++)