all repos — dwm @ f22d047d4139ef889e95aabd0103e11357193e5a

my dwm build

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
Anselm R Garbe garbeam@gmail.com
Mon, 19 May 2008 15:05:46 +0100
commit

f22d047d4139ef889e95aabd0103e11357193e5a

parent

4a5c8d84dbf410b8b9aa4dc81954568f10ca104f

3 files changed, 37 insertions(+), 16 deletions(-)

jump to
M config.mkconfig.mk

@@ -10,14 +10,19 @@

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
M dwm.1dwm.1

@@ -57,6 +57,9 @@ .B Mod1\-Shift\-Return

Start .BR xterm. .TP +.B Mod1\-b +Toggles bar on and off. +.TP .B Mod1\-space Toggles between layouts. .TP
M dwm.cdwm.c

@@ -39,6 +39,9 @@ #include <X11/Xatom.h>

#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 @@ }

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++)