tmake it easier for the user, if Xinerama support is given, always use the scre… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit f22d047d4139ef889e95aabd0103e11357193e5a | |
parent 4a5c8d84dbf410b8b9aa4dc81954568f10ca104f | |
Author: Anselm R Garbe <[email protected]> | |
Date: Mon, 19 May 2008 15:05:46 +0100 | |
make it easier for the user, if Xinerama support is given, always use the scree… | |
Diffstat: | |
M config.mk | 11 ++++++++--- | |
M dwm.1 | 3 +++ | |
M dwm.c | 39 +++++++++++++++++++++--------… | |
3 files changed, 37 insertions(+), 16 deletions(-) | |
--- | |
diff --git a/config.mk b/config.mk | |
t@@ -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 | |
diff --git a/dwm.1 b/dwm.1 | |
t@@ -57,6 +57,9 @@ click on a tag label adds/removes that tag to/from the focus… | |
Start | |
.BR xterm. | |
.TP | |
+.B Mod1\-b | |
+Toggles bar on and off. | |
+.TP | |
.B Mod1\-space | |
Toggles between layouts. | |
.TP | |
diff --git a/dwm.c b/dwm.c | |
t@@ -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)) | |
t@@ -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 :… | |
+ 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++) |