aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJohn Lindgren <john@jlindgren.net>2023-10-24 10:33:50 -0400
committerJohn Lindgren <john@jlindgren.net>2023-10-26 15:05:08 -0400
commitaf165acb427dd166f2768cf806d28f106bc61fd7 (patch)
tree32cb327e5791015ae9e5d5e19e8edce5f59713f7 /include
parent2410710a0f82b3e59b584d9c4f75b5f7758da6e4 (diff)
xwayland: add wlr_xwayland_set_workareas()
This function allows compositors to set the _NET_WORKAREA property on the root window. XWayland clients use _NET_WORKAREA to determine how much of the screen is not covered by panels/docks. The property is used for example by Qt to determine areas of the screen that popup menus should not overlap (see QScreen::availableVirtualGeometry).
Diffstat (limited to 'include')
-rw-r--r--include/wlr/xwayland/xwayland.h11
-rw-r--r--include/xwayland/xwm.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/include/wlr/xwayland/xwayland.h b/include/wlr/xwayland/xwayland.h
index 75e9cdac..cb9e35f0 100644
--- a/include/wlr/xwayland/xwayland.h
+++ b/include/wlr/xwayland/xwayland.h
@@ -16,6 +16,7 @@
#include <xcb/xcb_icccm.h>
#include <wlr/util/addon.h>
+struct wlr_box;
struct wlr_xwm;
struct wlr_data_source;
struct wlr_drag;
@@ -285,4 +286,14 @@ bool wlr_xwayland_or_surface_wants_focus(
enum wlr_xwayland_icccm_input_model wlr_xwayland_icccm_input_model(
const struct wlr_xwayland_surface *xsurface);
+/**
+ * Sets the _NET_WORKAREA root window property. The compositor should set
+ * one workarea per virtual desktop. This indicates the usable geometry
+ * (relative to the virtual desktop viewport) that is not covered by
+ * panels, docks, etc. Unfortunately, it is not possible to specify
+ * per-output workareas.
+ */
+void wlr_xwayland_set_workareas(struct wlr_xwayland *wlr_xwayland,
+ const struct wlr_box *workareas, size_t num_workareas);
+
#endif
diff --git a/include/xwayland/xwm.h b/include/xwayland/xwm.h
index 7db5d6cb..da3515da 100644
--- a/include/xwayland/xwm.h
+++ b/include/xwayland/xwm.h
@@ -88,6 +88,7 @@ enum atom_name {
DND_ACTION_PRIVATE,
NET_CLIENT_LIST,
NET_CLIENT_LIST_STACKING,
+ NET_WORKAREA,
ATOM_LAST // keep last
};