[gnome-shell/benzea/sd-notify] Notify service startup to systemd
- From: Benjamin Berg <bberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/benzea/sd-notify] Notify service startup to systemd
- Date: Sun, 25 Aug 2019 05:38:40 +0000 (UTC)
commit ec353eb908808e97351f0ff343ade49a30b38f7f
Author: Benjamin Berg <bberg redhat com>
Date: Sun Aug 25 07:26:12 2019 +0200
Notify service startup to systemd
Using the bus name to notify service startup to systemd has some
disadvantages. The main one being that systemd will consider a
gnome-shell restart (Alt+F2 r) a service failure and restart the shell
and clean up all its children (i.e. user launched applications). In the
future the shell should launch applications in their own transient unit.
Another potential issue is that we must never load
gnome-shell-wayland.service and gnome-shell-x11.service at the same
time, as systemd does not want to services providing the same bus name.
Fixes #1496
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1496
data/gnome-shell-wayland.service.in | 3 +--
data/gnome-shell-x11.service.in | 3 +--
src/main.c | 9 +++++++++
3 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/data/gnome-shell-wayland.service.in b/data/gnome-shell-wayland.service.in
index 848a3ea329..351571c7fc 100644
--- a/data/gnome-shell-wayland.service.in
+++ b/data/gnome-shell-wayland.service.in
@@ -17,10 +17,9 @@ Before=gnome-session-initialized.target
#Conflicts=gnome-shell-x11.service
[Service]
-Type=dbus
+Type=notify
ExecStart=@bindir@/gnome-shell
# Exit code 1 means we are probably *not* dealing with an extension failure
SuccessExitStatus=1
# On wayland we cannot restart
Restart=no
-BusName=org.gnome.Shell
diff --git a/data/gnome-shell-x11.service.in b/data/gnome-shell-x11.service.in
index 142f26b241..2c9fec1b5a 100644
--- a/data/gnome-shell-x11.service.in
+++ b/data/gnome-shell-x11.service.in
@@ -21,7 +21,7 @@ StartLimitIntervalSec=15s
StartLimitBurst=3
[Service]
-Type=dbus
+Type=notify
ExecStart=@bindir@/gnome-shell
# Exit code 1 means we are probably *not* dealing with an extension failure
SuccessExitStatus=1
@@ -29,4 +29,3 @@ SuccessExitStatus=1
Restart=always
# Do not wait before restarting the shell
RestartSec=0ms
-BusName=org.gnome.Shell
diff --git a/src/main.c b/src/main.c
index 6faf9934fb..8be1395f70 100644
--- a/src/main.c
+++ b/src/main.c
@@ -24,6 +24,14 @@
#include "shell-perf-log.h"
#include "st.h"
+#ifdef HAVE_SYSTEMD
+#include <systemd/sd-daemon.h>
+#else
+/* So we don't need to add ifdef's everywhere */
+#define sd_notify(u, m) do {} while (0)
+#define sd_notifyf(u, m, ...) do {} while (0)
+#endif
+
extern GType gnome_shell_plugin_get_type (void);
#define SHELL_DBUS_SERVICE "org.gnome.Shell"
@@ -524,6 +532,7 @@ main (int argc, char **argv)
shell_init_debug (g_getenv ("SHELL_DEBUG"));
shell_dbus_init (meta_get_replace_current_wm ());
+ sd_notify (0, "READY=1");
shell_a11y_init ();
shell_perf_log_init ();
shell_introspection_init ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]