summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2015-09-24 17:35:30 +0100
committerGaƫl Bonithon <gael@xfce.org>2021-12-27 17:50:24 +0100
commit1c2102e590edd202e048395f66bf7ed2df71bd4e (patch)
tree0310b539c9bd987c95f2f2c267ab13d677ac96a2
parent3ea0a2d0f93f71e69c7b5db39e7c3a72dfea918a (diff)
downloadtumbler-1c2102e590edd202e048395f66bf7ed2df71bd4e.tar.gz
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 <https://bugs.freedesktop.org/show_bug.cgi?id=53220> in telepathy-mission-control. Closes #14.
-rw-r--r--tumblerd/Makefile.am7
-rw-r--r--tumblerd/org.xfce.Tumbler.Cache1.service.in1
-rw-r--r--tumblerd/org.xfce.Tumbler.Manager1.service.in1
-rw-r--r--tumblerd/org.xfce.Tumbler.Thumbnailer1.service.in1
-rw-r--r--tumblerd/tumblerd.service.in9
5 files changed, 19 insertions, 0 deletions
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