From 67d764ecd52b4f7e972eb355a41cd90b8dcca10c Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Thu, 17 Sep 2020 17:35:58 +0200 Subject: [PATCH 4/4] gdesktopappinfo: Add SourcePath= to transient systemd units systemd allows setting a SourcePath= which shows the file that the unit has been generated from. KDE is starting to set this and it seems like a good idea, so do the same here. See https://invent.kde.org/frameworks/kio/-/merge_requests/124 --- gio/gdesktopappinfo.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index 743027422..1b763b76c 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -2777,6 +2777,7 @@ create_systemd_scope (GDBusConnection *session_bus, { GVariantBuilder builder; const char *app_name = g_get_application_name (); + const char *source_path = NULL; char *appid = NULL; char *appid_escaped = NULL; char *snid_escaped = NULL; @@ -2802,6 +2803,8 @@ create_systemd_scope (GDBusConnection *session_bus, */ unit_name = g_strdup_printf ("app-glib-%s-%d.scope", appid_escaped, pid); + source_path = g_desktop_app_info_get_filename (info); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("(ssa(sv)a(sa(sv)))")); g_variant_builder_add (&builder, "s", unit_name); g_variant_builder_add (&builder, "s", "fail"); @@ -2815,6 +2818,16 @@ create_systemd_scope (GDBusConnection *session_bus, "Description", g_variant_new_take_string (g_strdup_printf ("Application launched by %s", app_name))); + + /* If we have a .desktop file, document that the scope has been "generated" + * from it. + */ + if (source_path && g_utf8_validate (source_path, -1, NULL)) + g_variant_builder_add (&builder, + "(sv)", + "SourcePath", + g_variant_new_string (source_path)); + g_variant_builder_add (&builder, "(sv)", "PIDs", -- 2.29.2