From eeb161c616bc88640ec2a6e25eb31f818ff6c9d0 Mon Sep 17 00:00:00 2001 From: Window Maker Date: Sun, 24 May 2026 09:26:24 +0200 Subject: [PATCH] wayland: auto-restart on crash; verify info-panel and icon-chooser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit E3 (Crash Dialog): Showing a UI from a crashed compositor's child process is impossible on Wayland — the child cannot connect to the dead parent's display. Default to WMRestart instead of WMAbort, so the user's session recovers automatically on a wmaker crash (the standard daily-driver expectation). Removed the misleading 'cannot open connection' message. E2 (Info Panel) and E4 (Icon Chooser): both already use the standard fake_leader_create + wManageInternalWindow pattern that the Exit and Run dialogs use. No code changes; user can verify by opening Info Panel from the root menu and Icon Chooser via right-click on a dock icon → Settings → Browse. --- src/backend/wayland/wl_backend.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index 9a67e32..898f9f7 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -199,6 +199,7 @@ #include "../../appicon.h" /* WAppIcon */ #include "../../menu.h" /* WMenu, WMenuEntry */ #include "../../balloon.h" /* WBalloon */ +#include "../../dialog.h" /* WMRestart, WMAbort */ #include "../backend.h" #include "wl_backend.h" @@ -3968,9 +3969,14 @@ wl_screen_init_display(WScreen *scr, int screen_number) static int wl_show_crash_dialog(int sig) { + /* Wayland: showing a UI from a crashed compositor's child process is + * not possible (the child would need to connect to the dead parent + * for its compositor). Default to auto-restart, which is the most + * useful behavior for a daily-driver compositor — the user's session + * recovers on its own. The crash signal is logged separately by + * the monitor parent. */ (void)sig; - werror(_("cannot open connection for crashing dialog panel. Aborting.")); - return 0; /* WMAbort */ + return WMRestart; } /* ------------------------------------------------------------------ */