From b42d3dfaa4121213eafde8254a94a1a33452c488 Mon Sep 17 00:00:00 2001
From: c4pp4
Date: Sun, 3 Oct 2021 19:09:30 +0200
Subject: [PATCH 1/1] Don't try DBusActivatable when in Unity

Don't try DBusActivatable when in Unity user interface and fallback on Exec=.

Signed-off-by: c4pp4
---
 gio/gdesktopappinfo.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 1a4b979..b9b17f2 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -1754,6 +1754,29 @@ binary_from_exec (const char *exec)
   return g_strndup (start, p - start);
 }
 
+static gboolean
+in_desktop (const gchar *name)
+{
+  const gchar *desktop_name_list;
+  gchar **names;
+  gboolean in_list = FALSE;
+  gint i;
+
+  desktop_name_list = g_getenv ("XDG_CURRENT_DESKTOP");
+  if (!desktop_name_list)
+    return FALSE;
+
+  names = g_strsplit (desktop_name_list, ":", -1);
+  for (i = 0; names[i] && !in_list; i++)
+    if (strcmp (names[i], name) == 0) {
+      in_list = TRUE;
+      break;
+    }
+  g_strfreev (names);
+
+  return in_list;
+}
+
 static gboolean
 g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info,
                                       GKeyFile        *key_file)
@@ -1893,7 +1916,7 @@ g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info,
   /* Can only be DBusActivatable if we know the filename, which means
    * that this won't work for the load-from-keyfile case.
    */
-  if (bus_activatable && info->filename)
+  if (bus_activatable && info->filename && !in_desktop("Unity"))
     {
       gchar *basename;
       gchar *last_dot;
-- 
2.32.0

