-
Notifications
You must be signed in to change notification settings - Fork 78
Description
It seems that the "X11Window::update_frame_extents() " function is broken on various Linux window managers
The update_frame_extents() function calculates the size of the window decorations for top, right, bottom and left.
For example this is broken in the Cinnamon Window Manager (known as Muffin)
This is used for setting absolute window positions on the screen by using the clan::DisplayWindowDescription client_area flag's
This used to work in the distant past, however times have changed with what is actually supported on the Linux window manager
Currently we use "_NET_REQUEST_FRAME_EXTENTS" for unmapped windows. Various WM's have this unimplemented. Since the spec says " The Window Manager MUST respond by estimating the prospective frame extents". The word "estimate" means it cannot be relied on, even if it's actually implemented.
For mapped windows, I tried waiting for "_NET_FRAME_EXTENTS" event and using XGetWindowProperty to retrieve the extent , and it still returns 0,0,0,0. Even if this worked, it would be a hack.
I remember looking at this problem many moons ago. In my opinion, we shouldn't pretend it works, and remove the "update_frame_extents" function.
To summarize, Essentially, there is no fully reliable way via X11 to measure the true visible frame for compositing WMs.
Note, in Wayland you also cannot know the frame size before showing the window.