From ca043be19710cd7f5f5974bea82ad65552ccabdc Mon Sep 17 00:00:00 2001 From: deepend Date: Sat, 7 Mar 2026 19:21:37 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20KDE=20Wayland=20alert=20flash=E2=80=94de?= =?UTF-8?q?tect=20Plasma+Wayland,=20present()=20before=20urgency=20hint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fe-gtk/maingui.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index 4729c060..7d37ac21 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -432,12 +432,47 @@ set_window_urgency (GtkWidget *win, gboolean set) gtk_window_set_urgency_hint (GTK_WINDOW (win), set); } +static gboolean +is_wayland_display (void) +{ + GdkDisplay *display = gdk_display_get_default (); + const char *name; + + if (!display) + return FALSE; + + name = gdk_display_get_name (display); + if (!name) + return FALSE; + + return g_str_has_prefix (name, "wayland"); +} + +static gboolean +is_kde_desktop (void) +{ + const char *desktop = g_getenv ("XDG_CURRENT_DESKTOP"); + + if (desktop && strstr (desktop, "KDE")) + return TRUE; + + return g_getenv ("KDE_FULL_SESSION") != NULL; +} + +static gboolean +is_kde_wayland (void) +{ + return is_wayland_display () && is_kde_desktop (); +} + static void flash_window (GtkWidget *win) { #ifdef HAVE_GTK_MAC gtkosx_application_attention_request (osx_app, INFO_REQUEST); #endif + if (is_kde_wayland ()) + gtk_window_present (GTK_WINDOW (win)); set_window_urgency (win, TRUE); }