From ab9cf4dc9753630401662c1b5aced92b1f2edd05 Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Tue, 10 Jun 2025 06:50:41 +0900 Subject: [PATCH] Bump xdg-shell version from 3 to 6 - Send xdg_toplevel.wm_capabilities - Send xdg_toplevel.configure_bounds so that clients can map a window that fits within the usable area, without relying on view_constrain_size_to_that_of_usable_area() which is called after map. - (The new "suspended" state should be handled by wlr_scene in the future) --- src/xdg.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/xdg.c b/src/xdg.c index a31550e5..c2da35b7 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -18,7 +18,7 @@ #include "window-rules.h" #include "workspaces.h" -#define LAB_XDG_SHELL_VERSION (3) +#define LAB_XDG_SHELL_VERSION 6 #define CONFIGURE_TIMEOUT_MS 100 static struct xdg_toplevel_view * @@ -139,6 +139,19 @@ handle_commit(struct wl_listener *listener, void *data) if (serial > 0) { set_pending_configure_serial(view, serial); } + + uint32_t wm_caps = WLR_XDG_TOPLEVEL_WM_CAPABILITIES_WINDOW_MENU + | WLR_XDG_TOPLEVEL_WM_CAPABILITIES_MAXIMIZE + | WLR_XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN + | WLR_XDG_TOPLEVEL_WM_CAPABILITIES_MINIMIZE; + wlr_xdg_toplevel_set_wm_capabilities(toplevel, wm_caps); + + if (view->output) { + wlr_xdg_toplevel_set_bounds(toplevel, + view->output->usable_area.width, + view->output->usable_area.height); + } + /* * Handle initial fullscreen/maximize requests immediately after * scheduling the initial configure event (before it is sent) in -- 2.52.0