[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 06:16:31 +0000 (UTC)
commit 4269daba21c67f59dfe225e01506e564236ea537
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,
cleaning up all its children (i.e. user launched applications). In the
future the shell should launch applications in their own transient unit
so that a service restart does not affect applications.
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 like two services providing the same bus
name.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1496
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/690
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]