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



commit 897b603c80abb7cedb9fc8ee3ec695512ce08b19
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          |  6 +++
 data/gnome-settings-daemon-gdm.target              |  4 ++
 data/gnome-settings-daemon-wayland.target          |  7 ++++
 data/gnome-settings-daemon-x11.target              |  6 +++
 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                                | 18 +++++++-
 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, 313 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..83bdf099
--- /dev/null
+++ b/data/gnome-settings-daemon-gdm-wayland.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=GNOME Settings daemon (wayland GDM)
+StopWhenUnneeded=yes
+Conflicts=gnome-settings-daemon-gdm-x11.target gnome-settings-daemon.target
+Wants=gnome-shell-wayland.target
+BindsTo=gnome-settings-daemon-gdm.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..60df7b76
--- /dev/null
+++ b/data/gnome-settings-daemon-gdm-x11.target
@@ -0,0 +1,6 @@
+[Unit]
+Description=GNOME Settings daemon (x11 GDM)
+StopWhenUnneeded=yes
+BindsTo=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..fd287569
--- /dev/null
+++ b/data/gnome-settings-daemon-wayland.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=GNOME Settings daemon (wayland)
+StopWhenUnneeded=yes
+Before=gnome-settings-daemon.target
+Requires=gnome-settings-daemon.target
+Conflicts=gnome-settings-daemon-x11.target gnome-settings-daemon-gdm.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..bf82e186
--- /dev/null
+++ b/data/gnome-settings-daemon-x11.target
@@ -0,0 +1,6 @@
+[Unit]
+Description=GNOME Settings daemon (x11)
+StopWhenUnneeded=yes
+Before=gnome-settings-daemon.target
+Requires=gnome-settings-daemon.target
+Conflicts=gnome-settings-daemon-wayland.target gnome-settings-daemon-gdm.target
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 47cf3722..4131adcc 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..0126aa02
--- /dev/null
+++ b/plugins/a11y-settings/gsd-a11y-settings.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Accessibility settings
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..9e9b6099
--- /dev/null
+++ b/plugins/clipboard/gsd-clipboard.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Clipboard handler
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..700a7bf4
--- /dev/null
+++ b/plugins/color/gsd-color.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Color management
+PartOf=graphical-session.target
+After=@default_after@
+
+[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 c1eea323..8e63b60b 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);
@@ -259,14 +228,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,
@@ -279,8 +245,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..909f226d
--- /dev/null
+++ b/plugins/datetime/gsd-datetime.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Date & Time handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..ad0e951f
--- /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=@default_after@
+
+[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..bee9fe82
--- /dev/null
+++ b/plugins/housekeeping/gsd-housekeeping.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Maintenance of expirable data
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..9c58d5f8
--- /dev/null
+++ b/plugins/keyboard/gsd-keyboard.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Keyboard handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..be9cbf44
--- /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=@default_after@ 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 6afd892d..5ced4bb7 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -40,16 +40,23 @@ 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.Notify.@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.Notify.@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('default_after', 'gnome-session-bus.target graphical-session-pre.target 
gnome-settings-daemon.target gnome-settings-daemon-gdm.target gnome-shell-wayland.target')
+    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 +65,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..b37349af
--- /dev/null
+++ b/plugins/mouse/gsd-mouse.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Mouse settings management
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..4085731f
--- /dev/null
+++ b/plugins/power/gsd-power.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Power management handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..6a4961e2
--- /dev/null
+++ b/plugins/print-notifications/gsd-print-notifications.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Printer notifications
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..9cbc387c
--- /dev/null
+++ b/plugins/rfkill/gsd-rfkill.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=RFKill handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..5882e9d0
--- /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=@default_after@
+
+[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..40f6db15
--- /dev/null
+++ b/plugins/sharing/gsd-sharing.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Sharing handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..8bcef18e
--- /dev/null
+++ b/plugins/smartcard/gsd-smartcard.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Smartcard handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..6c57270e
--- /dev/null
+++ b/plugins/sound/gsd-sound.service.in
@@ -0,0 +1,14 @@
+[Unit]
+Description=Sound sample caching handling
+PartOf=graphical-session.target
+After=@default_after@ 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..ecf50210
--- /dev/null
+++ b/plugins/wacom/gsd-wacom.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Wacom handling
+PartOf=graphical-session.target
+After=@default_after@
+
+[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..f5969474
--- /dev/null
+++ b/plugins/xsettings/gsd-xsettings.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=XSettings
+PartOf=graphical-session.target
+After=@default_after@
+
+[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]