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
f22d047d
3 file(s) · +37 −16
| 10 | 10 | X11INC = /usr/X11R6/include |
|
| 11 | 11 | X11LIB = /usr/X11R6/lib |
|
| 12 | 12 | ||
| 13 | + | # Xinerama, uncomment if you don't want it |
|
| 14 | + | XINERAMALIBS = -L${X11LIB} -lXinerama |
|
| 15 | + | XINERAMAFLAGS = -DXINERAMA |
|
| 16 | + | ||
| 13 | 17 | # includes and libs |
|
| 14 | 18 | INCS = -I. -I/usr/include -I${X11INC} |
|
| 15 | - | LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 |
|
| 19 | + | LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${XINERAMALIBS} |
|
| 16 | 20 | ||
| 17 | 21 | # flags |
|
| 18 | - | CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\" |
|
| 22 | + | CPPFLAGS = -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} |
|
| 23 | + | CFLAGS = -Os ${INCS} ${CPPFLAGS} |
|
| 19 | 24 | LDFLAGS = -s ${LIBS} |
|
| 20 | - | #CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" |
|
| 25 | + | #CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} ${CPPFLAGS} |
|
| 21 | 26 | #LDFLAGS = -g ${LIBS} |
|
| 22 | 27 | ||
| 23 | 28 | # Solaris |
| 57 | 57 | Start |
|
| 58 | 58 | .BR xterm. |
|
| 59 | 59 | .TP |
|
| 60 | + | .B Mod1\-b |
|
| 61 | + | Toggles bar on and off. |
|
| 62 | + | .TP |
|
| 60 | 63 | .B Mod1\-space |
|
| 61 | 64 | Toggles between layouts. |
|
| 62 | 65 | .TP |
| 39 | 39 | #include <X11/Xlib.h> |
|
| 40 | 40 | #include <X11/Xproto.h> |
|
| 41 | 41 | #include <X11/Xutil.h> |
|
| 42 | + | #ifdef XINERAMA |
|
| 43 | + | #include <X11/extensions/Xinerama.h> |
|
| 44 | + | #endif |
|
| 42 | 45 | ||
| 43 | 46 | /* macros */ |
|
| 44 | 47 | #define MAX(a, b) ((a) > (b) ? (a) : (b)) |
|
| 1579 | 1582 | ||
| 1580 | 1583 | void |
|
| 1581 | 1584 | updategeom(void) { |
|
| 1582 | - | unsigned int i; |
|
| 1583 | - | ||
| 1584 | - | #ifdef CUSTOMGEOM /* define your own if you are Xinerama user */ |
|
| 1585 | - | CUSTOMGEOM |
|
| 1586 | - | #else |
|
| 1587 | - | /* bar geometry*/ |
|
| 1588 | - | bx = 0; |
|
| 1589 | - | by = showbar ? (topbar ? 0 : sh - bh) : -bh; |
|
| 1590 | - | bw = sw; |
|
| 1585 | + | int i; |
|
| 1586 | + | #ifdef XINERAMA |
|
| 1587 | + | XineramaScreenInfo *info = NULL; |
|
| 1591 | 1588 | ||
| 1592 | 1589 | /* window area geometry */ |
|
| 1593 | - | wx = sx; |
|
| 1594 | - | wy = showbar && topbar ? sy + bh : sy; |
|
| 1595 | - | ww = sw; |
|
| 1596 | - | wh = showbar ? sh - bh : sh; |
|
| 1590 | + | if(XineramaIsActive(dpy)) { |
|
| 1591 | + | info = XineramaQueryScreens(dpy, &i); |
|
| 1592 | + | wx = info[0].x_org; |
|
| 1593 | + | wy = showbar && topbar ? info[0].y_org + info[0].height + bh : info[0].y_org; |
|
| 1594 | + | ww = info[0].width; |
|
| 1595 | + | wh = showbar ? info[0].height - bh : info[0].height; |
|
| 1596 | + | XFree(info); |
|
| 1597 | + | } |
|
| 1598 | + | else |
|
| 1597 | 1599 | #endif |
|
| 1600 | + | { |
|
| 1601 | + | wx = sx; |
|
| 1602 | + | wy = showbar && topbar ? sy + bh : sy; |
|
| 1603 | + | ww = sw; |
|
| 1604 | + | wh = showbar ? sh - bh : sh; |
|
| 1605 | + | } |
|
| 1606 | + | ||
| 1607 | + | /* bar geometry*/ |
|
| 1608 | + | bx = wx; |
|
| 1609 | + | by = showbar ? (topbar ? 0 : wy + wh) : -bh; |
|
| 1610 | + | bw = ww; |
|
| 1598 | 1611 | ||
| 1599 | 1612 | /* update layout geometries */ |
|
| 1600 | 1613 | for(i = 0; i < LENGTH(layouts); i++) |
|