fix: KDE Wayland alert flash—detect Plasma+Wayland, present() before urgency hint

This commit is contained in:
2026-03-07 19:21:37 -07:00
parent 50346683a1
commit ca043be197

View File

@@ -432,12 +432,47 @@ set_window_urgency (GtkWidget *win, gboolean set)
gtk_window_set_urgency_hint (GTK_WINDOW (win), 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 static void
flash_window (GtkWidget *win) flash_window (GtkWidget *win)
{ {
#ifdef HAVE_GTK_MAC #ifdef HAVE_GTK_MAC
gtkosx_application_attention_request (osx_app, INFO_REQUEST); gtkosx_application_attention_request (osx_app, INFO_REQUEST);
#endif #endif
if (is_kde_wayland ())
gtk_window_present (GTK_WINDOW (win));
set_window_urgency (win, TRUE); set_window_urgency (win, TRUE);
} }