Xinerama and XRandR dual head support for cwm(1). Now we detect the xrandr

reconfiguration events and change our sizes depending on that. We also detect
the xinerama screens for maximize, vertmaximize and initial window placement.

This could be improved by automatically resizing maximized windows when
the screen resolution changes and by moving windows that would be hidden
into visible space. Said changes will come shortly.

Tested by many. matthieu@ didn't oppose.
This commit is contained in:
oga
2008-09-29 23:16:46 +00:00
parent e2610449d1
commit a0739c6cd4
7 changed files with 174 additions and 29 deletions

View File

@ -67,3 +67,28 @@ screen_updatestackingorder(void)
XFree(wins);
}
void
screen_init_xinerama(struct screen_ctx *sc)
{
XineramaScreenInfo *info;
int no, fake;
if (HasXinerama == 0 || XineramaIsActive(X_Dpy) == 0) {
HasXinerama = 0;
sc->xinerama_no = 0;
}
info = XineramaQueryScreens(X_Dpy, &no);
if (info == NULL) {
/*is xinerama is actually off, instead of a malloc failure? */
if (sc->xinerama == NULL)
HasXinerama = NULL;
return;
}
if (sc->xinerama != NULL)
XFree(sc->xinerama);
sc->xinerama = info;
sc->xinerama_no = no;
}