summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xdp-utils.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/xdp-utils.c b/src/xdp-utils.c
index be7aa94..b45eec5 100644
--- a/src/xdp-utils.c
+++ b/src/xdp-utils.c
@@ -207,10 +207,27 @@ xdp_app_info_load_app_info (XdpAppInfo *app_info)
g_return_val_if_fail (app_info != NULL, NULL);
- if (app_info->id[0] == '\0')
- return NULL;
+ switch (app_info->kind)
+ {
+ case XDP_APP_INFO_KIND_FLATPAK:
+ desktop_id = g_strconcat (app_info->id, ".desktop", NULL);
+ break;
+
+ case XDP_APP_INFO_KIND_SNAP:
+ desktop_id = g_key_file_get_string (app_info->u.snap.keyfile,
+ SNAP_METADATA_GROUP_INFO,
+ SNAP_METADATA_KEY_DESKTOP_FILE,
+ NULL);
+ break;
- desktop_id = g_strconcat (app_info->id, ".desktop", NULL);
+ case XDP_APP_INFO_KIND_HOST:
+ default:
+ desktop_id = NULL;
+ break;
+ }
+
+ if (desktop_id == NULL)
+ return NULL;
return G_APP_INFO (g_desktop_app_info_new (desktop_id));
}