diff options
| author | Anselm R Garbe <garbeam@gmail.com> | 2008-05-19 15:05:46 +0100 | 
|---|---|---|
| committer | Anselm R Garbe <garbeam@gmail.com> | 2008-05-19 15:05:46 +0100 | 
| commit | f22d047d4139ef889e95aabd0103e11357193e5a (patch) | |
| tree | 2dbb4fd896339ff199b06095eaf524bf3dba9b1d | |
| parent | 4a5c8d84dbf410b8b9aa4dc81954568f10ca104f (diff) | |
| download | dwm-f22d047d4139ef889e95aabd0103e11357193e5a.tar.gz | |
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
| -rw-r--r-- | config.mk | 11 | ||||
| -rw-r--r-- | dwm.1 | 3 | ||||
| -rw-r--r-- | dwm.c | 39 | 
3 files changed, 37 insertions, 16 deletions
| @@ -10,14 +10,19 @@ MANPREFIX = ${PREFIX}/share/man  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 @@ -57,6 +57,9 @@ click on a tag label adds/removes that tag to/from the focused window.  Start  .BR xterm.  .TP +.B Mod1\-b +Toggles bar on and off. +.TP  .B Mod1\-space  Toggles between layouts.  .TP @@ -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++) | 
