/* check if the window needs WM_TAKE_FOCUS */
cwindow->needs_take_focus = window_supports_protocol(cwindow->id, A_WM_TAKE_FOCUS);
+ /* read the preferred _NET_WM_WINDOW_TYPE atom */
+ cwindow->window_type = xcb_get_preferred_window_type(type_reply);
+
/* Where to start searching for a container that swallows the new one? */
Con *search_at = croot;
if (cwindow->dock)
want_floating = false;
+ /* Plasma windows set their geometry in WM_SIZE_HINTS. */
+ if ((wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_US_POSITION || wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_P_POSITION) &&
+ (wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_US_SIZE || wm_size_hints.flags & XCB_ICCCM_SIZE_HINT_P_SIZE)) {
+ DLOG("We are setting geometry according to wm_size_hints x=%d y=%d w=%d h=%d\n",
+ wm_size_hints.x, wm_size_hints.y, wm_size_hints.width, wm_size_hints.height);
+ geom->x = wm_size_hints.x;
+ geom->y = wm_size_hints.y;
+ geom->width = wm_size_hints.width;
+ geom->height = wm_size_hints.height;
+ }
+
/* Store the requested geometry. The width/height gets raised to at least
* 75x50 when entering floating mode, which is the minimum size for a
* window to be useful (smaller windows are usually overlays/toolbars/…