From 726c97a503215bda07a6293e612d02b36dcc5b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Tue, 13 Jun 2023 23:37:36 +0200 Subject: [PATCH] Update Gala Systemd services Sync with what is currently done in GNOME Shell --- data/{gala-x11.target => gala.target} | 6 ++-- data/gala@wayland.service.in | 34 +++++++++++++++++++ ...ala-x11.service.in => gala@x11.service.in} | 16 +++++++-- data/meson.build | 15 ++++++-- 4 files changed, 63 insertions(+), 8 deletions(-) rename data/{gala-x11.target => gala.target} (62%) create mode 100644 data/gala@wayland.service.in rename data/{gala-x11.service.in => gala@x11.service.in} (56%) diff --git a/data/gala-x11.target b/data/gala.target similarity index 62% rename from data/gala-x11.target rename to data/gala.target index 09593073c..059d6ead8 100644 --- a/data/gala-x11.target +++ b/data/gala.target @@ -1,10 +1,10 @@ [Unit] -Description=Gala on X11 +Description=Gala DefaultDependencies=no Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target -Requires=gala-x11.service -After=gala-x11.service +Wants=io.elementary.gala@wayland.service +Wants=io.elementary.gala@x11.service diff --git a/data/gala@wayland.service.in b/data/gala@wayland.service.in new file mode 100644 index 000000000..52e2ad229 --- /dev/null +++ b/data/gala@wayland.service.in @@ -0,0 +1,34 @@ +[Unit] +Description=Gala on Wayland +# On wayland, force a session shutdown +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly +CollectMode=inactive-or-failed +RefuseManualStart=on +RefuseManualStop=on + +After=gnome-session-manager.target + +Requisite=gnome-session-initialized.target +PartOf=gnome-session-initialized.target +Before=gnome-session-initialized.target + +#NOTE: ConditionEnvironment works with systemd >= 246 +ConditionEnvironment=XDG_SESSION_TYPE=%I + +[Service] +Slice=session.slice +Type=notify +ExecStart=@bindir@/gala + +# unset some environment variables that were set by the compositor and won't work now that the compositor is gone +ExecStopPost=-/bin/sh -c 'test "$SERVICE_RESULT" != "exec-condition" && systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY' + +# On wayland we cannot restart +Restart=no +# Kill any stubborn child processes after this long +TimeoutStopSec=5 + +# Lower down Gala's OOM score to avoid being killed by OOM-killer too early +OOMScoreAdjust=-1000 + diff --git a/data/gala-x11.service.in b/data/gala@x11.service.in similarity index 56% rename from data/gala-x11.service.in rename to data/gala@x11.service.in index 460c1f6a1..88b798ee0 100644 --- a/data/gala-x11.service.in +++ b/data/gala@x11.service.in @@ -1,6 +1,6 @@ [Unit] Description=Gala on X11 -# On X11, try to show the fail whale screen +# On X11, try to show the GNOME Session Failed screen OnFailure=gnome-session-failed.target OnFailureJobMode=replace CollectMode=inactive-or-failed @@ -13,16 +13,28 @@ Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target +#NOTE: ConditionEnvironment works with systemd >= 246 +ConditionEnvironment=XDG_SESSION_TYPE=%I + # Limit startup frequency more than the default StartLimitIntervalSec=15s StartLimitBurst=3 [Service] +Slice=session.slice Type=notify ExecStart=@bindir@/gala + +# On X11 we do not need to unset any variables + +# On X11 we want to restart on-success (Alt+F2 + r) and on-failure. Restart=always -# Do not wait before restarting +# Do not wait before restarting the shell RestartSec=0ms # Kill any stubborn child processes after this long TimeoutStopSec=5 +# Lower down gnome-shell's OOM score to avoid being killed by OOM-killer too early +OOMScoreAdjust=-1000 + + diff --git a/data/meson.build b/data/meson.build index 833d077b4..e64e30a1e 100644 --- a/data/meson.build +++ b/data/meson.build @@ -50,15 +50,24 @@ if get_option('systemd') unit_conf.set('bindir', bindir) configure_file( - input: 'gala-x11.service.in', - output: 'gala-x11.service', + input: 'gala@x11.service.in', + output: 'io.elementary.gala@x11.service', + install: true, + install_dir: systemd_userunitdir, + configuration: unit_conf + ) + + configure_file( + input: 'gala@wayland.service.in', + output: 'io.elementary.gala@wayland.service', install: true, install_dir: systemd_userunitdir, configuration: unit_conf ) install_data( - 'gala-x11.target', + 'gala.target', + rename: 'io.elementary.gala.target', install_dir: systemd_userunitdir ) endif