xwayland: Read and publish _NET_WM_STRUT_PARTIAL property

This is needed for compositors that want to reserve space for
XWayland panels.  Such a feature can be useful in a "transitional"
setup, where only the X11 window manager and compositor is replaced
but other components of an X11 desktop environment are still used.

This change simply reads the X11 property; the compositor is free
to ignore it.  Thus, compositors that don't want to support such a
"transitional" feature are not impacted.

v2: Update xwayland_surface_associate()
This commit is contained in:
John Lindgren 2022-11-09 16:09:43 -05:00
parent 23b7d22c6c
commit 068280201a
4 changed files with 47 additions and 0 deletions

View file

@ -12,6 +12,7 @@
#include <stdbool.h>
#include <wayland-server-core.h>
#include <xcb/xcb.h>
#include <xcb/xcb_ewmh.h>
#include <xcb/xcb_icccm.h>
#include <wlr/util/addon.h>
@ -121,6 +122,11 @@ struct wlr_xwayland_surface {
uint32_t decorations;
xcb_icccm_wm_hints_t *hints;
xcb_size_hints_t *size_hints;
/*
* _NET_WM_STRUT_PARTIAL (used by e.g. XWayland panels;
* right/bottom are translated into root x/y coordinates)
*/
xcb_ewmh_wm_strut_partial_t *strut_partial;
bool pinging;
struct wl_event_source *ping_timer;
@ -154,6 +160,7 @@ struct wlr_xwayland_surface {
struct wl_signal set_window_type;
struct wl_signal set_hints;
struct wl_signal set_decorations;
struct wl_signal set_strut_partial;
struct wl_signal set_override_redirect;
struct wl_signal set_geometry;
struct wl_signal ping_timeout;