diff --git a/dmenu.c b/dmenu.c index 64ff973..11a0551 100644 --- a/dmenu.c +++ b/dmenu.c @@ -639,6 +639,8 @@ setup(void) #ifdef XINERAMA i = 0; if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) { + if (n < 1) + die("Xinerama reported no screens"); XGetInputFocus(dpy, &w, &di); if (mon >= 0 && mon < n) i = mon; @@ -661,6 +663,9 @@ setup(void) for (i = 0; i < n; i++) if (INTERSECT(x, y, 1, 1, info[i]) != 0) break; + /* fallback to the first screen if there is no intersection */ + if (i >= n) + i = 0; x = info[i].x_org; y = info[i].y_org + (topbar ? 0 : info[i].height - mh);