From 1fe1b4e66e264998883aa991772362d3a3fad1d5 Mon Sep 17 00:00:00 2001 From: Guido Cella Date: Wed, 16 Sep 2026 12:47:52 +0200 Subject: [PATCH] show popups in fullscreen Xwayland apps The dialogs opened by clicking items in Xwyland applications' toolbars are unmanaged clients, so placing them in LyrFloat drew them below their source client in LyrFS when it is fullscreened. Add a new dedicated layer for unamanged clients to fix it. Don't put them in LyrFS to prevent the regular fullscreen client from hiding unmanaged ones, e.g. by opening dmenu and then clicking the regular client. Fixes https://codeberg.org/dwl/dwl/issues/556 --- dwl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dwl.c b/dwl.c index 156660f..f7bda0b 100644 --- a/dwl.c +++ b/dwl.c @@ -88,7 +88,8 @@ /* enums */ enum { CurNormal, CurPressed, CurMove, CurResize }; /* cursor */ enum { XDGShell, LayerShell, X11 }; /* client types */ -enum { LyrBg, LyrBottom, LyrTile, LyrFloat, LyrTop, LyrFS, LyrOverlay, LyrIMPopup, LyrBlock, NUM_LAYERS }; /* scene layers */ +enum { LyrBg, LyrBottom, LyrTile, LyrFloat, LyrTop, LyrFS, LyrUnmanaged, LyrOverlay, + LyrIMPopup, LyrBlock, NUM_LAYERS }; /* scene layers */ enum { AxisUp, AxisRight, AxisDown, AxisLeft }; typedef union { @@ -1869,7 +1870,7 @@ mapnotify(struct wl_listener *listener, void *data) /* Handle unmanaged clients first so we can return prior create borders */ if (client_is_unmanaged(c)) { /* Unmanaged clients always are floating */ - wlr_scene_node_reparent(&c->scene->node, layers[LyrFloat]); + wlr_scene_node_reparent(&c->scene->node, layers[LyrUnmanaged]); wlr_scene_node_set_position(&c->scene->node, c->geom.x, c->geom.y); client_set_size(c, c->geom.width, c->geom.height); if (client_wants_focus(c)) {