+list_t *sys_info(win_t *win)
+{
+ /* Use global copy of screens so we can add struts */
+ if (screens == NULL) {
+ int n;
+ XineramaScreenInfo *info = NULL;
+ if (XineramaIsActive(win->sys->dpy))
+ info = XineramaQueryScreens(win->sys->dpy, &n);
+ if (!info) {
+ win_t *screen = new0(win_t);
+ *screen = *win;
+ return list_insert(NULL, screen);
+ }
+ 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);
+ }
+ }
+ return screens;
+}
+