GSList *config_desktops_names;
guint config_screen_firstdesk;
guint config_desktop_popup_time;
+gint config_emulate_xinerama;
gboolean config_resize_redraw;
gboolean config_resize_four_corners;
if (d > 0)
config_screen_firstdesk = (unsigned) d;
}
+ if ((n = parse_find_node("emulatexinerama", node)))
+ config_emulate_xinerama = parse_bool(doc, n);
if ((n = parse_find_node("names", node))) {
GSList *it;
xmlNodePtr nname;
config_desktops_num = 4;
config_screen_firstdesk = 1;
+ config_emulate_xinerama = FALSE;
config_desktops_names = NULL;
config_desktop_popup_time = 875;
extern gint config_desktops_num;
/*! Desktop to start on, put 5 to start in the center of a 3x3 grid */
extern guint config_screen_firstdesk;
+/*! Emulate xinerama by dividing screen in two halves, left and right. */
+extern gboolean config_emulate_xinerama;
/*! Names for the desktops */
extern GSList *config_desktops_names;
/*! Amount of time to show the desktop switch dialog */
#include "geom.h"
#include "extensions.h"
#include "screen.h"
+#include "config.h"
#include "debug.h"
gboolean extensions_xkb = FALSE;
guint i;
gint l, r, t, b;
#ifdef XINERAMA
- if (extensions_xinerama) {
- guint i;
+ if (!config_emulate_xinerama && extensions_xinerama) {
gint n;
XineramaScreenInfo *info = XineramaQueryScreens(ob_display, &n);
*nxin = n;
XFree(info);
} else
#endif
- if (ob_debug_xinerama) {
- gint w = WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen));
- gint h = HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen));
- *nxin = 2;
- *xin_areas = g_new(Rect, *nxin + 1);
- RECT_SET((*xin_areas)[0], 0, 0, w/2, h);
- RECT_SET((*xin_areas)[1], w/2, 0, w-(w/2), h);
- }
- else {
+ if (config_emulate_xinerama) {
+ *nxin = 2;
+ *xin_areas = g_new(Rect, *nxin + 1);
+ RECT_SET((*xin_areas)[0], 0, 0,
+ WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)) / 2,
+ HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen)));
+ RECT_SET((*xin_areas)[1],
+ WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)) / 2,
+ 0,
+ WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)) / 2,
+ HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen)));
+ RECT_SET((*xin_areas)[*nxin], 0, 0,
+ WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)),
+ HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen)));
+ } else {
*nxin = 1;
*xin_areas = g_new(Rect, *nxin + 1);
RECT_SET((*xin_areas)[0], 0, 0,
WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)),
HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen)));
}
-
/* returns one extra with the total area in it */
l = (*xin_areas)[0].x;
t = (*xin_areas)[0].y;