From 7e7c8cb0788e4ec454ec3dfeb4b470027da43cb9 Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Sun, 9 Aug 2026 16:10:45 +0900 Subject: [PATCH 1/5] Use gala instead of the greeter compositor --- session/compositor.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/session/compositor.service.in b/session/compositor.service.in index ebb59a831..ca7602fde 100644 --- a/session/compositor.service.in +++ b/session/compositor.service.in @@ -23,7 +23,7 @@ StartLimitBurst=3 [Service] Slice=session.slice Type=notify -ExecStart=@bindir@/io.elementary.greeter-compositor +ExecStart=env GALA_SESSION_TYPE=installer XDG_CURRENT_DESKTOP=Pantheon gala --wayland # On X11 we do not need to unset any variables From 5b878bcf9da0c737a49db510975c5d000b71a157 Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Tue, 11 Aug 2026 10:19:19 +0900 Subject: [PATCH 2/5] Make sure ConditionEnvironment with unescaped instance name '%I' works --- .../{compositor.service.in => compositor@wayland.service.in} | 0 session/installer.target | 2 +- session/meson.build | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename session/{compositor.service.in => compositor@wayland.service.in} (100%) diff --git a/session/compositor.service.in b/session/compositor@wayland.service.in similarity index 100% rename from session/compositor.service.in rename to session/compositor@wayland.service.in diff --git a/session/installer.target b/session/installer.target index aad61651d..b2cb13952 100644 --- a/session/installer.target +++ b/session/installer.target @@ -6,4 +6,4 @@ Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target -Wants=io.elementary.installer.compositor.service +Wants=io.elementary.installer.compositor@wayland.service diff --git a/session/meson.build b/session/meson.build index 9c1663d3e..fdb1f557f 100644 --- a/session/meson.build +++ b/session/meson.build @@ -30,8 +30,8 @@ service_config = configuration_data() service_config.set('bindir', prefix / get_option('bindir')) configure_file( - input: 'compositor.service.in', - output: 'io.elementary.installer.compositor.service', + input: 'compositor@wayland.service.in', + output: 'io.elementary.installer.compositor@wayland.service', install: true, install_dir: systemd_userunitdir, configuration: service_config From f8f403f157684f874e829b87f1799e8b091b25cf Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Tue, 11 Aug 2026 10:16:53 +0900 Subject: [PATCH 3/5] Merge with gala@wayland.service.in --- session/compositor@wayland.service.in | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/session/compositor@wayland.service.in b/session/compositor@wayland.service.in index ca7602fde..1559f21be 100644 --- a/session/compositor@wayland.service.in +++ b/session/compositor@wayland.service.in @@ -1,8 +1,8 @@ [Unit] Description=Greeter Compositor -# On X11, try to show the GNOME Session Failed screen -OnFailure=gnome-session-failed.target -OnFailureJobMode=replace +# On wayland, force a session shutdown +OnFailure=gnome-session-shutdown.target +OnFailureJobMode=replace-irreversibly CollectMode=inactive-or-failed RefuseManualStart=on RefuseManualStop=on @@ -16,25 +16,18 @@ 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=env GALA_SESSION_TYPE=installer XDG_CURRENT_DESKTOP=Pantheon gala --wayland +ExecStart=env GALA_SESSION_TYPE=installer XDG_CURRENT_DESKTOP=Pantheon @bindir@/gala --wayland -# On X11 we do not need to unset any variables +# 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 && rm -f "$XDG_RUNTIME_DIR/wayland-0" "$XDG_RUNTIME_DIR/wayland-0.lock"' -# On X11 we want to restart on-success (Alt+F2 + r) and on-failure. -Restart=always -# Do not wait before restarting the shell -RestartSec=0ms +# On wayland we cannot restart +Restart=no # 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 +# Lower down Gala's OOM score to avoid being killed by OOM-killer too early OOMScoreAdjust=-1000 - - From 65629b89492dc4994c5b5843cc4f93c760138d5f Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Tue, 11 Aug 2026 11:08:41 +0900 Subject: [PATCH 4/5] Create session.conf --- session/meson.build | 5 +++++ session/session.conf | 6 ++++++ 2 files changed, 11 insertions(+) create mode 100644 session/session.conf diff --git a/session/meson.build b/session/meson.build index fdb1f557f..18da33d35 100644 --- a/session/meson.build +++ b/session/meson.build @@ -50,3 +50,8 @@ configure_file( install: true, install_dir: systemd_userunitdir ) + +install_data( + 'session.conf', + install_dir: systemd_userunitdir / 'gnome-session@installer.target.d', +) diff --git a/session/session.conf b/session/session.conf new file mode 100644 index 000000000..3715b1d48 --- /dev/null +++ b/session/session.conf @@ -0,0 +1,6 @@ +[Unit] +Wants=org.gnome.SettingsDaemon.MediaKeys.target +Wants=org.gnome.SettingsDaemon.Power.target +Wants=org.gnome.SettingsDaemon.XSettings.target + +Requires=io.elementary.installer.target From 25a34d70ad76c77f0a2d5d33a0e16221dd789311 Mon Sep 17 00:00:00 2001 From: Ryo Nakano Date: Tue, 11 Aug 2026 11:23:24 +0900 Subject: [PATCH 5/5] target wants service instead of service is wanted by target Because the installer is not started automatically when the session starts. --- session/installer.service.in | 3 --- session/installer.target | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/session/installer.service.in b/session/installer.service.in index cd1afabf1..01729bc97 100644 --- a/session/installer.service.in +++ b/session/installer.service.in @@ -2,9 +2,6 @@ Description=Installer After=gnome-session-initialized.target -[Install] -WantedBy=io.elementary.installer.target - [Service] Type=exec ExecStart=@bindir@/io.elementary.installer diff --git a/session/installer.target b/session/installer.target index b2cb13952..b0a51ce88 100644 --- a/session/installer.target +++ b/session/installer.target @@ -6,4 +6,4 @@ Requisite=gnome-session-initialized.target PartOf=gnome-session-initialized.target Before=gnome-session-initialized.target -Wants=io.elementary.installer.compositor@wayland.service +Wants=io.elementary.installer.compositor@wayland.service io.elementary.installer.service