[gnome-software/wip/rancell/ubuntu-3-20-rebase: 8/28] Fix launching various KDE4 applications
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/ubuntu-3-20-rebase: 8/28] Fix launching various KDE4 applications
- Date: Sat, 17 Jun 2017 04:54:31 +0000 (UTC)
commit ddb595704d863533132d2158cc305652dbec625f
Author: Richard Hughes <richard hughsie com>
Date: Wed Apr 27 10:31:47 2016 +0100
Fix launching various KDE4 applications
Based on a patch by Iain Lane <iain orangesquash org uk>, many thanks.
src/gs-application.c | 2 +-
src/gs-dbus-helper.c | 2 +-
src/gs-plugin.c | 3 ++-
src/gs-utils.c | 24 ++++++++++++++++++++++++
src/gs-utils.h | 2 ++
5 files changed, 30 insertions(+), 3 deletions(-)
---
diff --git a/src/gs-application.c b/src/gs-application.c
index 6b10e01..11382b0 100644
--- a/src/gs-application.c
+++ b/src/gs-application.c
@@ -623,7 +623,7 @@ launch_activated (GSimpleAction *action,
desktop_id = g_variant_get_string (parameter, NULL);
display = gdk_display_get_default ();
- appinfo = G_APP_INFO (g_desktop_app_info_new (desktop_id));
+ appinfo = G_APP_INFO (gs_utils_get_desktop_app_info (desktop_id));
if (appinfo == NULL) {
g_warning ("no such desktop file: %s", desktop_id);
return;
diff --git a/src/gs-dbus-helper.c b/src/gs-dbus-helper.c
index e657f2a..be3988d 100644
--- a/src/gs-dbus-helper.c
+++ b/src/gs-dbus-helper.c
@@ -297,7 +297,7 @@ notify_search_resources (GsShellExtrasMode mode,
g_autoptr(GNotification) n = NULL;
if (desktop_id != NULL) {
- app_info = g_desktop_app_info_new (desktop_id);
+ app_info = gs_utils_get_desktop_app_info (desktop_id);
if (app_info != NULL)
app_name = g_app_info_get_name (G_APP_INFO (app_info));
}
diff --git a/src/gs-plugin.c b/src/gs-plugin.c
index ebb85b0..5a50aed 100644
--- a/src/gs-plugin.c
+++ b/src/gs-plugin.c
@@ -44,6 +44,7 @@
#include "gs-plugin.h"
#include "gs-os-release.h"
+#include "gs-utils.h"
/**
* gs_plugin_status_to_string:
@@ -355,7 +356,7 @@ gs_plugin_app_launch (GsPlugin *plugin, GsApp *app, GError **error)
desktop_id);
return FALSE;
}
- appinfo = G_APP_INFO (g_desktop_app_info_new (desktop_id));
+ appinfo = G_APP_INFO (gs_utils_get_desktop_app_info (desktop_id));
if (appinfo == NULL) {
g_set_error (error,
GS_PLUGIN_ERROR,
diff --git a/src/gs-utils.c b/src/gs-utils.c
index 2c783f2..ad48647 100644
--- a/src/gs-utils.c
+++ b/src/gs-utils.c
@@ -532,4 +532,28 @@ gs_utils_is_current_desktop (const gchar *name)
return g_strv_contains ((const gchar * const *) names, name);
}
+/**
+ * gs_utils_get_desktop_app_info:
+ */
+GDesktopAppInfo *
+gs_utils_get_desktop_app_info (const gchar *id)
+{
+ GDesktopAppInfo *app_info;
+
+ /* try to get the standard app-id */
+ app_info = g_desktop_app_info_new (id);
+
+ /* KDE is a special project because it believes /usr/share/applications
+ * isn't KDE enough. For this reason we support falling back to the
+ * "kde4-" prefixed ID to avoid educating various self-righteous
+ * upstreams about the correct ID to use in the AppData file. */
+ if (app_info == NULL) {
+ g_autofree gchar *kde_id = NULL;
+ kde_id = g_strdup_printf ("%s-%s", "kde4", id);
+ app_info = g_desktop_app_info_new (kde_id);
+ }
+
+ return app_info;
+}
+
/* vim: set noexpandtab: */
diff --git a/src/gs-utils.h b/src/gs-utils.h
index aa2925e..e524cb0 100644
--- a/src/gs-utils.h
+++ b/src/gs-utils.h
@@ -22,6 +22,7 @@
#ifndef __GS_UTILS_H
#define __GS_UTILS_H
+#include <gio/gdesktopappinfo.h>
#include <gtk/gtk.h>
#include "gs-app.h"
@@ -66,6 +67,7 @@ gchar *gs_utils_get_user_hash (GError **error);
GPermission *gs_utils_get_permission (const gchar *id);
gboolean gs_utils_is_current_desktop (const gchar *name);
+GDesktopAppInfo *gs_utils_get_desktop_app_info (const gchar *id);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]