From 10b426a3e4d9666751071d50b6d3027c7f5a6a76 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Thu, 16 Feb 2023 14:16:09 +0100 Subject: applet: use appindicator if we can outside of X11 The XEmbed-based GtkStatusIcon will silently do nothing in many environments nowadays. In particular, it can't work outside X11. Let's prefer X11 only if we got no app indicator support. Otherwise, use the best backend possible and then turn on indicator support if it was not X11. Based on work by Aleksei Bavshin . --- src/applet.c | 9 +++++++++ src/main.c | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/applet.c b/src/applet.c index 5c968ffe..8ef6833a 100644 --- a/src/applet.c +++ b/src/applet.c @@ -3392,6 +3392,15 @@ static void nma_init (NMApplet *applet) { applet->icon_size = 16; +#ifdef WITH_APPINDICATOR +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + with_appindicator = TRUE; +#else + with_appindicator = TRUE; +#endif +#endif + g_signal_connect (applet, "startup", G_CALLBACK (applet_startup), NULL); g_signal_connect (applet, "activate", G_CALLBACK (applet_activate), NULL); } diff --git a/src/main.c b/src/main.c index 1c0f7e94..769ead4d 100644 --- a/src/main.c +++ b/src/main.c @@ -58,8 +58,12 @@ int main (int argc, char *argv[]) bindtextdomain (GETTEXT_PACKAGE, NMALOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); - if (!with_appindicator) - gdk_set_allowed_backends ("x11,*"); +#ifndef WITH_APPINDICATOR + /* If we got no app indicator, out only chance of doing anything + * useful is the XEmbed-based GtkStatusIcon, which only works on + * X11. Prefer it. */ + gdk_set_allowed_backends ("x11,*"); +#endif gtk_init (&argc, &argv); textdomain (GETTEXT_PACKAGE); -- cgit v1.2.1