Vector<Rect> FindScreensResolution() { Vector<Rect> screens; int event, error; if(XineramaQueryExtension(Xdisplay, &event, &error)) { if(XineramaIsActive(Xdisplay)) { int screensNumber = 0; XineramaScreenInfo* info = XineramaQueryScreens(Xdisplay, &screensNumber); for(int i = 0; i < screensNumber; i++) screens.Add(Rect(info[i].x_org, info[i].y_org, info[i].x_org + info[i].width, info[i].y_org + info[i].height)); XFree(info); } } return screens; } Rect Ctrl::GetDefaultWindowRect() { GuiLock __; int width = Xwidth; int height = Xheight; Vector<Rect> screens = FindScreensResolution(); for(int i = 0; i < screens.GetCount(); i++) { if(width > screens[i].Width()) { width = screens[i].Width(); } if(height > screens[i].Height()) { height = screens[i].Height(); } } static int pos = min(width / 10, 50); pos += 10; int cx = width * 2 / 3; int cy = height * 2 / 3; if(pos + cx + 50 > width || pos + cy + 50 > height) pos = 0; return RectC(pos + 20, pos + 20, cx, cy); }