summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorDavid King <amigadave@amigadave.com>2013-06-24 08:21:22 +0100
committerDavid King <amigadave@amigadave.com>2014-09-01 11:03:25 +0100
commit147d3ecde3ec5f9153ce05208a043a802d320b3d (patch)
treecfc66bf278a5c34c6d25af96915bc8820bf80932 /data
parentc53fd1edbcb2b4bbe664c58dc25fa7877d62d1b4 (diff)
downloadcaribou-147d3ecde3ec5f9153ce05208a043a802d320b3d.tar.gz
daemon: Start with D-Bus activation
Install the daemon to libexecdir. Make the daemon own a name on the session bus, and install a D-Bus service file for it. Allow the name to be replaced by another process, so that a D-Bus activated daemon can be replaced by a GSettings-key autostarted daemon. Handle run() being called multiple times. https://bugzilla.gnome.org/show_bug.cgi?id=683712
Diffstat (limited to 'data')
-rw-r--r--data/Makefile.am16
-rw-r--r--data/caribou-autostart.desktop.in.in (renamed from data/caribou-autostart.desktop.in)2
-rw-r--r--data/org.gnome.Caribou.Daemon.service.in3
3 files changed, 17 insertions, 4 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
index 2e83b85..97c663f 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -8,19 +8,28 @@ gsettings_schemas_in_files = \
gsettings_SCHEMAS = $(gsettings_schemas_in_files:.gschema.xml.in=.gschema.xml)
autostartdir = $(sysconfdir)/xdg/autostart
-autostart_in_files = caribou-autostart.desktop.in
+autostart_in_in_files = caribou-autostart.desktop.in.in
+autostart_in_files = $(autostart_in_in_files:.desktop.in.in=.desktop.in)
autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
servicefiledir = $(datadir)/dbus-1/services
-servicefile_in_files = org.gnome.Caribou.Antler.service.in
+servicefile_in_files = \
+ org.gnome.Caribou.Antler.service.in \
+ org.gnome.Caribou.Daemon.service.in
servicefile_DATA = $(servicefile_in_files:.service.in=.service)
+caribou-autostart.desktop.in: caribou-autostart.desktop.in.in
+ $(AM_V_GEN)sed -e "s|[@]libexecdir[@]|$(libexecdir)|" $< > $@
+
org.gnome.Caribou.Antler.service: org.gnome.Caribou.Antler.service.in
$(AM_V_GEN)sed -e "s|[@]libexecdir[@]|$(libexecdir)|" $< > $@
+org.gnome.Caribou.Daemon.service: org.gnome.Caribou.Daemon.service.in
+ $(AM_V_GEN)sed -e "s|[@]libexecdir[@]|$(libexecdir)|" $< > $@
+
@INTLTOOL_DESKTOP_RULE@
-EXTRA_DIST = $(autostart_in_files) $(servicefile_in_files)
+EXTRA_DIST = $(autostart_in_in_files) $(servicefile_in_files)
org.gnome.caribou.gschema.xml.in: $(top_srcdir)/caribou/settings/caribou_settings.py
$(AM_V_GEN)$(PYTHON) -B $(top_srcdir)/tools/make_schema.py \
@@ -34,6 +43,7 @@ org.gnome.antler.gschema.xml.in: $(top_srcdir)/caribou/antler/antler_settings.py
CLEANFILES = \
$(autostart_DATA) \
+ $(autostart_in_files) \
$(gsettings_schemas_in_files) \
$(gsettings_SCHEMAS) \
$(servicefile_DATA)
diff --git a/data/caribou-autostart.desktop.in b/data/caribou-autostart.desktop.in.in
index 445ad14..4bd1c03 100644
--- a/data/caribou-autostart.desktop.in
+++ b/data/caribou-autostart.desktop.in.in
@@ -1,7 +1,7 @@
[Desktop Entry]
Type=Application
Name=Caribou
-Exec=caribou
+Exec=@libexecdir@/caribou
AutostartCondition=GSettings org.gnome.desktop.a11y.applications screen-keyboard-enabled
X-GNOME-AutoRestart=true
#X-GNOME-Autostart-Phase=Initialization
diff --git a/data/org.gnome.Caribou.Daemon.service.in b/data/org.gnome.Caribou.Daemon.service.in
new file mode 100644
index 0000000..a30d622
--- /dev/null
+++ b/data/org.gnome.Caribou.Daemon.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.Caribou.Daemon
+Exec=@libexecdir@/caribou