[glib/benzea/systemd-transient-scope: 2/3] gdesktopappinfo: Add SourcePath= to transient systemd units




commit 0c8bee99bc8620453bf503798f2147f519c1dd30
Author: Benjamin Berg <bberg redhat com>
Date:   Thu Sep 17 17:35:58 2020 +0200

    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 530b41b28..047726e29 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -2740,6 +2740,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;
@@ -2765,6 +2766,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");
@@ -2778,6 +2781,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",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]