+list_t *sys_info(win_t *win)
+{
+ /* Use global copy of screens so we can add struts */
+ if (screens == NULL) {
+ /* Add Xinerama screens */
+ int n = 0;
+ XineramaScreenInfo *info = NULL;
+ if (XineramaIsActive(win->sys->dpy))
+ info = XineramaQueryScreens(win->sys->dpy, &n);
+ for (int i = 0; i < n; i++) {
+ win_t *screen = new0(win_t);
+ screen->x = info[i].x_org;
+ screen->y = info[i].y_org;
+ screen->w = info[i].width;
+ screen->h = info[i].height;
+ screens = list_append(screens, screen);
+ }
+ }
+ if (screens == NULL) {
+ /* No xinerama support */
+ win_t *screen = new0(win_t);
+ *screen = *win;
+ screens = list_insert(NULL, screen);
+ }
+ return screens;
+}
+