From 1c2102e590edd202e048395f66bf7ed2df71bd4e Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 24 Sep 2015 17:35:30 +0100 Subject: Add a corresponding systemd user service for the D-Bus session services When running under a systemd user session, this results in tumblerd being placed in in its own cgroup, whereas previously it would be a child of dbus-daemon in the dbus.service cgroup. It also avoids races between up to three separate instances of the same executable being started for its three names, which could result in spurious activation failures if they are used in quick succession, similar to in telepathy-mission-control. Closes #14. --- tumblerd/Makefile.am | 7 +++++++ tumblerd/org.xfce.Tumbler.Cache1.service.in | 1 + tumblerd/org.xfce.Tumbler.Manager1.service.in | 1 + tumblerd/org.xfce.Tumbler.Thumbnailer1.service.in | 1 + tumblerd/tumblerd.service.in | 9 +++++++++ 5 files changed, 19 insertions(+) create mode 100644 tumblerd/tumblerd.service.in (limited to 'tumblerd') diff --git a/tumblerd/Makefile.am b/tumblerd/Makefile.am index f649d9b..1c3e76e 100644 --- a/tumblerd/Makefile.am +++ b/tumblerd/Makefile.am @@ -94,6 +94,11 @@ service_in_files = \ service_DATA = $(service_in_files:.service.in=.service) +systemd_userdir = $(prefix)/lib/systemd/user +systemd_user_in_files = tumblerd.service.in + +systemd_user_DATA = $(systemd_user_in_files:.service.in=.service) + %.service: %.service.in sed -e "s,\@libdir\@,$(libdir),g" \ -e "s,\@TUMBLER_VERSION_API\@,$(TUMBLER_VERSION_API),g" < $< > $@ @@ -103,9 +108,11 @@ conf_DATA = \ tumbler.rc CLEANFILES = \ + $(systemd_user_DATA) \ $(service_DATA) EXTRA_DIST = \ + $(systemd_user_in_files) \ $(service_in_files) \ tumbler.rc \ tumbler-cache-service-dbus.xml \ diff --git a/tumblerd/org.xfce.Tumbler.Cache1.service.in b/tumblerd/org.xfce.Tumbler.Cache1.service.in index db5fb1a..9221dcc 100644 --- a/tumblerd/org.xfce.Tumbler.Cache1.service.in +++ b/tumblerd/org.xfce.Tumbler.Cache1.service.in @@ -1,3 +1,4 @@ [D-BUS Service] Name=org.freedesktop.thumbnails.Cache1 Exec=@libdir@/tumbler-@TUMBLER_VERSION_API@/tumblerd +SystemdService=tumblerd.service diff --git a/tumblerd/org.xfce.Tumbler.Manager1.service.in b/tumblerd/org.xfce.Tumbler.Manager1.service.in index 4eb029b..cb070b9 100644 --- a/tumblerd/org.xfce.Tumbler.Manager1.service.in +++ b/tumblerd/org.xfce.Tumbler.Manager1.service.in @@ -1,3 +1,4 @@ [D-BUS Service] Name=org.freedesktop.thumbnails.Manager1 Exec=@libdir@/tumbler-@TUMBLER_VERSION_API@/tumblerd +SystemdService=tumblerd.service diff --git a/tumblerd/org.xfce.Tumbler.Thumbnailer1.service.in b/tumblerd/org.xfce.Tumbler.Thumbnailer1.service.in index 18b96f7..6dc6d91 100644 --- a/tumblerd/org.xfce.Tumbler.Thumbnailer1.service.in +++ b/tumblerd/org.xfce.Tumbler.Thumbnailer1.service.in @@ -1,3 +1,4 @@ [D-BUS Service] Name=org.freedesktop.thumbnails.Thumbnailer1 Exec=@libdir@/tumbler-@TUMBLER_VERSION_API@/tumblerd +SystemdService=tumblerd.service diff --git a/tumblerd/tumblerd.service.in b/tumblerd/tumblerd.service.in new file mode 100644 index 0000000..66c176a --- /dev/null +++ b/tumblerd/tumblerd.service.in @@ -0,0 +1,9 @@ +[Unit] +Description=Thumbnailing service + +[Service] +Type=dbus +# This is deliberately the bus name that is the last one to be claimed; +# if this is claimed, then everything is ready +BusName=org.freedesktop.thumbnails.Thumbnailer1 +ExecStart=@libdir@/tumbler-@TUMBLER_VERSION_API@/tumblerd -- cgit v1.2.1