xdg-decoration: differentiate between shadows and actual visible decoration
The definition of xdg-decoration
only knows two modes where all decoration surfaces are either drawn by the client or the server. Decorations usually consist of the visible surfaces inside the window geometry, such as the title bar and buttons, and the "invisible" shadows outside of the window geometry, where "window geometry" refers to the region defined by xdg_surface.set_window_geometry
.
Since xdg-decoration
does not distinguish between these two sets, it is not possible to toggle either of those independently. This has the downside that a client with server-side decorations cannot disable decorations without also disabling shadows. A use case for this is an undecorated client that would like to use shadows to visually separate it from other visible clients. A concrete usage of this is glfwWindowHint(GLFW_DECORATED, GLFW_FALSE)
in GLFW, which on X11 will only hide the title bar but keep shadows.
On top of this, it would be useful if clients with client-side decorations could request server-side shadows from the compositor. This would align the visual shadow style of different toolkits and clients that do not make use of third-party toolkits, such as GLFW and SDL.