diff options
-rw-r--r-- | .bzrignore | 2 | ||||
-rw-r--r-- | configure.ac | 11 | ||||
-rw-r--r-- | data/Makefile.am | 17 | ||||
-rw-r--r-- | data/indicator-application.conf.in | 15 | ||||
-rw-r--r-- | data/indicator-application.desktop.in | 9 | ||||
-rw-r--r-- | data/indicator-application.service.in | 3 | ||||
-rw-r--r-- | src/application-service-watcher.c | 31 |
7 files changed, 69 insertions, 19 deletions
@@ -110,3 +110,5 @@ bindings/mono/policy.0.0.appindicator-sharp.config bindings/mono/policy.0.0.appindicator-sharp.dll src/libapplication_la-generate-id.lo src/libappindicator_la-generate-id.lo +indicator-application.conf +indicator-application.desktop diff --git a/configure.ac b/configure.ac index 1cc1811..2d1ccc0 100644 --- a/configure.ac +++ b/configure.ac @@ -89,17 +89,6 @@ AC_SUBST(INDICATORDIR) AC_SUBST(INDICATORICONSDIR) ########################### -# DBus Service Info -########################### - -if test "x$with_localinstall" = "xyes"; then - DBUSSERVICEDIR="${datadir}/dbus-1/services/" -else - DBUSSERVICEDIR=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1` -fi -AC_SUBST(DBUSSERVICEDIR) - -########################### # Files ########################### diff --git a/data/Makefile.am b/data/Makefile.am index c142c4e..77ec71d 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,17 +1,24 @@ -dbus_servicesdir = $(DBUSSERVICEDIR) -dbus_services_DATA = indicator-application.service +upstart_jobsdir = $(datadir)/upstart/sessions/ +upstart_jobs_DATA = indicator-application.conf -%.service: %.service.in +%.conf: %.conf.in + sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ + +xdg_autostartdir = /etc/xdg/autostart +xdg_autostart_DATA = indicator-application.desktop + +%.desktop: %.desktop.in sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ overridedir = $(pkgdatadir) override_DATA = ordering-override.keyfile EXTRA_DIST = \ - indicator-application.service.in \ + indicator-application.desktop.in \ + indicator-application.conf.in \ ordering-override.keyfile CLEANFILES = \ - indicator-application.service + indicator-application.conf diff --git a/data/indicator-application.conf.in b/data/indicator-application.conf.in new file mode 100644 index 0000000..ddc803c --- /dev/null +++ b/data/indicator-application.conf.in @@ -0,0 +1,15 @@ +description "Indicator Application Service" + +# NOTE: Limiting only to Unity 7 right now as it's still using +# dbusmenu. That can be lifted after it is ported to GMenu + +start on (indicators-loaded or indicator-services-start) and xsession SESSION=ubuntu +stop on desktop-end or indicator-services-end + +emits appindicators-start appindicators-end + +respawn + +exec @libexecdir@/indicator-application-service + +pre-stop exec initctl emit appindicators-end diff --git a/data/indicator-application.desktop.in b/data/indicator-application.desktop.in new file mode 100644 index 0000000..61d3c4d --- /dev/null +++ b/data/indicator-application.desktop.in @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Name=Indicator Application +Exec=@libexecdir@/indicator-application-service +NotShowIn=Unity; +NoDisplay=true +StartupNotify=false +Terminal=false + diff --git a/data/indicator-application.service.in b/data/indicator-application.service.in deleted file mode 100644 index f6ceee3..0000000 --- a/data/indicator-application.service.in +++ /dev/null @@ -1,3 +0,0 @@ -[D-BUS Service] -Name=com.canonical.indicator.application -Exec=@libexecdir@/indicator-application-service diff --git a/src/application-service-watcher.c b/src/application-service-watcher.c index 006f3aa..13280ba 100644 --- a/src/application-service-watcher.c +++ b/src/application-service-watcher.c @@ -288,5 +288,36 @@ get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data) return; } + /* After we've got the name we can request upstart to trigger + the jobs of any application indicators that need to start + at desktop init time. */ + + GError * spawn_error = NULL; + gchar * argv[] = { + "initctl", + "--session", + "--user", + "emit", + "--no-wait", + "appindicators-start", + NULL, + }; + + g_spawn_async(NULL, /* Working Directory */ + argv, + NULL, /* environment */ + G_SPAWN_SEARCH_PATH, + NULL, NULL, /* child setup function */ + NULL, /* Pid */ + &spawn_error); + + if (spawn_error != NULL) { + /* NOTE: When we get to the point where we can start + assuming upstart user sessions this can be escillated + to a warning or higher */ + g_debug("Unable to signal appindicators-start to upstart: %s", spawn_error->message); + g_error_free(spawn_error); + } + return; } |