[gnome-settings-daemon/wip/laney/systemd-user: 28/29] plugins: Add systemd user service files for all the plugins



commit a87d500e8b833514ab4b4761ff5ee30c2acf8ad8
Author: Iain Lane <iain orangesquash org uk>
Date:   Tue Jan 16 11:21:48 2018 +0000

    plugins: Add systemd user service files for all the plugins
    
    Using the facility added in the previous commit, we can add systemd user
    service files for all plugins and know when they have started up.
    
    For simplicity, we create a target which gnome-session can start to
    activate all of g-s-d's plugins.
    
    All units are practically identical, except for
    
      - the media-keys and sound plugins wait for PulseAudio to start
    
    This is heavily based on a patch originally by Bastien Nocera
    <hadess hadess net>
    
    We also add a gnome-session-gdm target to start only required programs
    under GDM.
    
    Currently we check the running plugin name against a static list in the
    source code, and don't run the plugin if it's not needed in gdm. With
    systemd, we can do better.
    
    We provide a 'gdm' target which only pulls in the required programs, and
    get rid of the list. This target has
    Conflicts=gnome-settings-daemon.target, which means that the full fat
    g-s-d won't get started if -gdm already has been, and we arrange for it
    to be started explicitly by the login session target.

 data/gnome-settings-daemon-gdm-wayland.target      |  7 ++++
 data/gnome-settings-daemon-gdm-x11.target          |  8 ++++
 data/gnome-settings-daemon-gdm.target              |  4 ++
 data/gnome-settings-daemon-wayland.target          |  7 ++++
 data/gnome-settings-daemon-x11.target              |  8 ++++
 data/gnome-settings-daemon.target                  |  4 ++
 data/meson.build                                   | 12 ++++++
 meson.build                                        |  2 +
 plugins/a11y-settings/gsd-a11y-settings.service.in | 13 ++++++
 plugins/clipboard/gsd-clipboard.service.in         | 13 ++++++
 plugins/color/gsd-color.service.in                 | 13 ++++++
 plugins/common/daemon-skeleton-gtk.h               | 49 ++++------------------
 plugins/common/daemon-skeleton.h                   | 46 +++-----------------
 plugins/datetime/gsd-datetime.service.in           | 13 ++++++
 plugins/dummy/gsd-dummy.service.in                 | 13 ++++++
 plugins/housekeeping/gsd-housekeeping.service.in   | 13 ++++++
 plugins/keyboard/gsd-keyboard.service.in           | 13 ++++++
 plugins/media-keys/gsd-media-keys.service.in       | 14 +++++++
 plugins/meson.build                                | 17 +++++++-
 plugins/mouse/gsd-mouse.service.in                 | 13 ++++++
 plugins/power/gsd-power.service.in                 | 13 ++++++
 .../gsd-print-notifications.service.in             | 13 ++++++
 plugins/rfkill/gsd-rfkill.service.in               | 13 ++++++
 .../gsd-screensaver-proxy.service.in               | 13 ++++++
 plugins/sharing/gsd-sharing.service.in             | 13 ++++++
 plugins/smartcard/gsd-smartcard.service.in         | 13 ++++++
 plugins/sound/gsd-sound.service.in                 | 14 +++++++
 plugins/wacom/gsd-wacom.service.in                 | 13 ++++++
 plugins/xsettings/gsd-xsettings.service.in         | 13 ++++++
 29 files changed, 316 insertions(+), 84 deletions(-)
---
diff --git a/data/gnome-settings-daemon-gdm-wayland.target b/data/gnome-settings-daemon-gdm-wayland.target
new file mode 100644
index 00000000..c39cfca9
--- /dev/null
+++ b/data/gnome-settings-daemon-gdm-wayland.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=GNOME Settings daemon (wayland GDM)
+StopWhenUnneeded=yes
+BindsTo=gnome-settings-daemon-gdm.target
+After=gnome-settings-daemon-gdm.target
+Conflicts=gnome-settings-daemon-gdm-x11.target
+RefuseManualStart=yes
diff --git a/data/gnome-settings-daemon-gdm-x11.target b/data/gnome-settings-daemon-gdm-x11.target
new file mode 100644
index 00000000..2d141280
--- /dev/null
+++ b/data/gnome-settings-daemon-gdm-x11.target
@@ -0,0 +1,8 @@
+[Unit]
+Description=GNOME Settings daemon (x11 GDM)
+StopWhenUnneeded=yes
+Before=gnome-shell-x11.target gnome-shell.service
+BindsTo=gnome-settings-daemon-gdm.target
+After=gnome-settings-daemon-gdm.target
+Conflicts=gnome-settings-daemon-gdm-wayland.target gnome-settings-daemon.target
+RefuseManualStart=yes
diff --git a/data/gnome-settings-daemon-gdm.target b/data/gnome-settings-daemon-gdm.target
new file mode 100644
index 00000000..b13fbbf3
--- /dev/null
+++ b/data/gnome-settings-daemon-gdm.target
@@ -0,0 +1,4 @@
+[Unit]
+Description=GNOME Settings daemon (GDM)
+StopWhenUnneeded=yes
+Conflicts=gnome-settings-daemon.target
diff --git a/data/gnome-settings-daemon-wayland.target b/data/gnome-settings-daemon-wayland.target
new file mode 100644
index 00000000..0c7e1844
--- /dev/null
+++ b/data/gnome-settings-daemon-wayland.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=GNOME Settings daemon (wayland)
+StopWhenUnneeded=yes
+BindsTo=gnome-settings-daemon.target
+After=gnome-settings-daemon.target gnome-shell-wayland.target gnome-shell.service
+Conflicts=gnome-settings-daemon-x11.target
+RefuseManualStart=yes
diff --git a/data/gnome-settings-daemon-x11.target b/data/gnome-settings-daemon-x11.target
new file mode 100644
index 00000000..b11e260b
--- /dev/null
+++ b/data/gnome-settings-daemon-x11.target
@@ -0,0 +1,8 @@
+[Unit]
+Description=GNOME Settings daemon (x11)
+StopWhenUnneeded=yes
+Before=gnome-shell-x11.target gnome-shell.service
+BindsTo=gnome-settings-daemon.target
+After=gnome-settings-daemon.target
+Conflicts=gnome-settings-daemon-wayland.target
+RefuseManualStart=yes
diff --git a/data/gnome-settings-daemon.target b/data/gnome-settings-daemon.target
new file mode 100644
index 00000000..d5796dc1
--- /dev/null
+++ b/data/gnome-settings-daemon.target
@@ -0,0 +1,4 @@
+[Unit]
+Description=GNOME Settings daemon
+StopWhenUnneeded=yes
+RefuseManualStart=yes
diff --git a/data/meson.build b/data/meson.build
index e93ba641..7450a1c9 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -51,6 +51,18 @@ install_data(
   install_dir: join_paths(gsd_datadir, 'GConf', 'gsettings')
 )
 
+units = files('gnome-settings-daemon.target',
+              'gnome-settings-daemon-wayland.target',
+              'gnome-settings-daemon-x11.target',
+              'gnome-settings-daemon-gdm.target',
+              'gnome-settings-daemon-gdm-wayland.target',
+              'gnome-settings-daemon-gdm-x11.target')
+
+install_data(
+  units,
+  install_dir: systemduserunitdir
+)
+
 pkg.generate(
   version: gsd_version,
   name: meson.project_name(),
diff --git a/meson.build b/meson.build
index fd21a781..0df703c5 100644
--- a/meson.build
+++ b/meson.build
@@ -103,6 +103,8 @@ upower_glib_dep = dependency('upower-glib', version: '>= 0.99.0')
 x11_dep = dependency('x11')
 xtst_dep = dependency('xtst')
 
+systemduserunitdir = join_paths(gsd_prefix, 'lib', 'systemd', 'user')
+
 m_dep = cc.find_library('m')
 
 # ALSA integration (default enabled)
diff --git a/plugins/a11y-settings/gsd-a11y-settings.service.in 
b/plugins/a11y-settings/gsd-a11y-settings.service.in
new file mode 100644
index 00000000..90c8fe7d
--- /dev/null
+++ b/plugins/a11y-settings/gsd-a11y-settings.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Accessibility settings
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-a11y-settings
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/clipboard/gsd-clipboard.service.in b/plugins/clipboard/gsd-clipboard.service.in
new file mode 100644
index 00000000..12bdd984
--- /dev/null
+++ b/plugins/clipboard/gsd-clipboard.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Clipboard handler
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-clipboard
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/color/gsd-color.service.in b/plugins/color/gsd-color.service.in
new file mode 100644
index 00000000..f0225cb9
--- /dev/null
+++ b/plugins/color/gsd-color.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Color management
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-color
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/common/daemon-skeleton-gtk.h b/plugins/common/daemon-skeleton-gtk.h
index ab5c7833..7cb3f2d2 100644
--- a/plugins/common/daemon-skeleton-gtk.h
+++ b/plugins/common/daemon-skeleton-gtk.h
@@ -39,37 +39,6 @@ static GOptionEntry entries[] = {
         {NULL}
 };
 
-static const char *gdm_helpers[] = {
-       "a11y-keyboard",
-       "a11y-settings",
-       "clipboard",
-       "color",
-       "keyboard",
-       "media-keys",
-       "power",
-       "smartcard",
-       "sound",
-       "xsettings",
-       "wacom",
-};
-
-static gboolean
-should_run (void)
-{
-       const char *session_mode;
-       guint i;
-
-       session_mode = g_getenv ("GNOME_SHELL_SESSION_MODE");
-       if (g_strcmp0 (session_mode, "gdm") != 0)
-               return TRUE;
-
-       for (i = 0; i < G_N_ELEMENTS (gdm_helpers); i++) {
-               if (g_str_equal (PLUGIN_NAME, gdm_helpers[i]))
-                       return TRUE;
-       }
-       return FALSE;
-}
-
 static void
 respond_to_end_session (GDBusProxy *proxy)
 {
@@ -214,7 +183,7 @@ name_lost_cb (GDBusConnection *connection,
 int
 main (int argc, char **argv)
 {
-        GError  *error;
+        GError  *error = NULL;
         guint name_own_id;
 
         bindtextdomain (GETTEXT_PACKAGE, GNOME_SETTINGS_LOCALEDIR);
@@ -261,14 +230,11 @@ main (int argc, char **argv)
         manager = NEW ();
        register_with_gnome_session ();
 
-       if (should_run ()) {
-               error = NULL;
-               if (!START (manager, &error)) {
-                       fprintf (stderr, "Failed to start: %s\n", error->message);
-                       g_error_free (error);
-                       exit (1);
-               }
-       }
+        if (!START (manager, &error)) {
+                fprintf (stderr, "Failed to start: %s\n", error->message);
+                g_error_free (error);
+                exit (1);
+        }
 
        name_own_id = g_bus_own_name (G_BUS_TYPE_SESSION,
                                      PLUGIN_DBUS_NAME,
@@ -281,8 +247,7 @@ main (int argc, char **argv)
 
         gtk_main ();
 
-       if (should_run ())
-               STOP (manager);
+        STOP (manager);
 
         g_object_unref (manager);
         g_bus_unown_name (name_own_id);
diff --git a/plugins/common/daemon-skeleton.h b/plugins/common/daemon-skeleton.h
index 23befb78..0b86e490 100644
--- a/plugins/common/daemon-skeleton.h
+++ b/plugins/common/daemon-skeleton.h
@@ -42,36 +42,6 @@ static GOptionEntry entries[] = {
         {NULL}
 };
 
-static const char *gdm_helpers[] = {
-       "a11y-keyboard",
-       "a11y-settings",
-       "clipboard",
-       "color",
-       "keyboard",
-       "media-keys",
-       "power",
-       "smartcard",
-       "sound",
-       "xsettings"
-};
-
-static gboolean
-should_run (void)
-{
-       const char *session_mode;
-       guint i;
-
-       session_mode = g_getenv ("GNOME_SHELL_SESSION_MODE");
-       if (g_strcmp0 (session_mode, "gdm") != 0)
-               return TRUE;
-
-       for (i = 0; i < G_N_ELEMENTS (gdm_helpers); i++) {
-               if (g_str_equal (PLUGIN_NAME, gdm_helpers[i]))
-                       return TRUE;
-       }
-       return FALSE;
-}
-
 static void
 respond_to_end_session (GDBusProxy *proxy)
 {
@@ -236,14 +206,11 @@ main (int argc, char **argv)
         manager = NEW ();
        register_with_gnome_session (loop);
 
-       if (should_run ()) {
-               error = NULL;
-               if (!START (manager, &error)) {
-                       fprintf (stderr, "Failed to start: %s\n", error->message);
-                       g_error_free (error);
-                       exit (1);
-               }
-       }
+        if (!START (manager, &error)) {
+                fprintf (stderr, "Failed to start: %s\n", error->message);
+                g_error_free (error);
+                exit (1);
+        }
 
        name_own_id = g_bus_own_name (G_BUS_TYPE_SESSION,
                                      PLUGIN_DBUS_NAME,
@@ -256,8 +223,7 @@ main (int argc, char **argv)
 
         g_main_loop_run (loop);
 
-       if (should_run ())
-               STOP (manager);
+        STOP (manager);
 
         g_object_unref (manager);
         g_bus_unown_name (name_own_id);
diff --git a/plugins/datetime/gsd-datetime.service.in b/plugins/datetime/gsd-datetime.service.in
new file mode 100644
index 00000000..8744b287
--- /dev/null
+++ b/plugins/datetime/gsd-datetime.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Date & Time handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-datetime
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/dummy/gsd-dummy.service.in b/plugins/dummy/gsd-dummy.service.in
new file mode 100644
index 00000000..e0451828
--- /dev/null
+++ b/plugins/dummy/gsd-dummy.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=GNOME Settings Daemon dummy replacement plugin (@pluginname@)
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-dummy --dummy-name=@pluginname@
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/housekeeping/gsd-housekeeping.service.in 
b/plugins/housekeeping/gsd-housekeeping.service.in
new file mode 100644
index 00000000..3fec3743
--- /dev/null
+++ b/plugins/housekeeping/gsd-housekeeping.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Maintenance of expirable data
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-housekeeping
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/keyboard/gsd-keyboard.service.in b/plugins/keyboard/gsd-keyboard.service.in
new file mode 100644
index 00000000..2f08e4be
--- /dev/null
+++ b/plugins/keyboard/gsd-keyboard.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Keyboard handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-keyboard
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/media-keys/gsd-media-keys.service.in b/plugins/media-keys/gsd-media-keys.service.in
new file mode 100644
index 00000000..6b40ce62
--- /dev/null
+++ b/plugins/media-keys/gsd-media-keys.service.in
@@ -0,0 +1,14 @@
+[Unit]
+Description=Media keys handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target pulseaudio.service
+Requires=pulseaudio.service
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-media-keys
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/meson.build b/plugins/meson.build
index 5ff476a0..ae3b26fb 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -40,16 +40,22 @@ plugins_cflags = ['-DGNOME_SETTINGS_LOCALEDIR="@0@"'.format(gsd_localedir)]
 
 foreach plugin: [['common', '']] + enabled_plugins
   plugin_name = plugin[0]
-  plugin_dbus_name = plugin[1]
+  plugin_name_case = plugin[1]
+  plugin_dbus_name='org.gnome.SettingsDaemon.@0@'.format(plugin_name_case)
 
   cflags = [
     '-DG_LOG_DOMAIN="@0@-plugin"'.format(plugin_name),
     '-DPLUGIN_NAME="@0@"'.format(plugin_name),
-    '-DPLUGIN_DBUS_NAME="org.gnome.SettingsDaemon.@0@"'.format(plugin_dbus_name),
+    '-DPLUGIN_DBUS_NAME="@0@"'.format(plugin_dbus_name),
   ] + plugins_cflags
 
   if not ['common', 'dummy'].contains(plugin_name)
     desktop = 'org.gnome.SettingsDaemon.@0@.desktop'.format(plugin[1])
+    user_unit = 'gsd-@0@.service'.format(plugin_name)
+
+    unit_conf = configuration_data()
+    unit_conf.set('libexecdir', gsd_libexecdir)
+    unit_conf.set('plugin_dbus_name', plugin_dbus_name)
 
     configure_file(
       input: join_paths(plugin_name, desktop + '.in'),
@@ -58,6 +64,13 @@ foreach plugin: [['common', '']] + enabled_plugins
       install: true,
       install_dir: gsd_xdg_autostart
     )
+    configure_file(
+      input: join_paths(plugin_name, user_unit + '.in'),
+      output: user_unit,
+      configuration: unit_conf,
+      install: true,
+      install_dir: systemduserunitdir
+   )
   endif
 
   subdir(plugin_name)
diff --git a/plugins/mouse/gsd-mouse.service.in b/plugins/mouse/gsd-mouse.service.in
new file mode 100644
index 00000000..4d25898f
--- /dev/null
+++ b/plugins/mouse/gsd-mouse.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Mouse settings management
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-mouse
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/power/gsd-power.service.in b/plugins/power/gsd-power.service.in
new file mode 100644
index 00000000..010e44e0
--- /dev/null
+++ b/plugins/power/gsd-power.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Power management handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-power
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/print-notifications/gsd-print-notifications.service.in 
b/plugins/print-notifications/gsd-print-notifications.service.in
new file mode 100644
index 00000000..97e45cc9
--- /dev/null
+++ b/plugins/print-notifications/gsd-print-notifications.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Printer notifications
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-print-notifications
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/rfkill/gsd-rfkill.service.in b/plugins/rfkill/gsd-rfkill.service.in
new file mode 100644
index 00000000..e83548df
--- /dev/null
+++ b/plugins/rfkill/gsd-rfkill.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=RFKill handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-rfkill
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/screensaver-proxy/gsd-screensaver-proxy.service.in 
b/plugins/screensaver-proxy/gsd-screensaver-proxy.service.in
new file mode 100644
index 00000000..2fa53b77
--- /dev/null
+++ b/plugins/screensaver-proxy/gsd-screensaver-proxy.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Freedesktop screensaver handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-screensaver-proxy
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/sharing/gsd-sharing.service.in b/plugins/sharing/gsd-sharing.service.in
new file mode 100644
index 00000000..baec02bf
--- /dev/null
+++ b/plugins/sharing/gsd-sharing.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Sharing handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-sharing
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target
diff --git a/plugins/smartcard/gsd-smartcard.service.in b/plugins/smartcard/gsd-smartcard.service.in
new file mode 100644
index 00000000..174d0a60
--- /dev/null
+++ b/plugins/smartcard/gsd-smartcard.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Smartcard handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-smartcard
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/sound/gsd-sound.service.in b/plugins/sound/gsd-sound.service.in
new file mode 100644
index 00000000..367510a5
--- /dev/null
+++ b/plugins/sound/gsd-sound.service.in
@@ -0,0 +1,14 @@
+[Unit]
+Description=Sound sample caching handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target pulseaudio.service
+Requires=pulseaudio.service
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-sound
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/wacom/gsd-wacom.service.in b/plugins/wacom/gsd-wacom.service.in
new file mode 100644
index 00000000..d1d2e0f0
--- /dev/null
+++ b/plugins/wacom/gsd-wacom.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Wacom handling
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-wacom
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target
diff --git a/plugins/xsettings/gsd-xsettings.service.in b/plugins/xsettings/gsd-xsettings.service.in
new file mode 100644
index 00000000..6572364e
--- /dev/null
+++ b/plugins/xsettings/gsd-xsettings.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=XSettings
+PartOf=graphical-session.target
+After=gnome-session-bus.target graphical-session-pre.target gnome-shell-wayland.target
+
+[Service]
+Type=dbus
+ExecStart=@libexecdir@/gsd-xsettings
+Restart=on-failure
+BusName=@plugin_dbus_name@
+
+[Install]
+WantedBy=gnome-settings-daemon.target gnome-settings-daemon-gdm.target


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