diff --git a/session/compositor.service.in b/session/compositor.service.in deleted file mode 100644 index ebb59a831..000000000 --- a/session/compositor.service.in +++ /dev/null @@ -1,40 +0,0 @@ -[Unit] -Description=Greeter Compositor -# On X11, try to show the GNOME Session Failed screen -OnFailure=gnome-session-failed.target -OnFailureJobMode=replace -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 - -# Limit startup frequency more than the default -StartLimitIntervalSec=15s -StartLimitBurst=3 - -[Service] -Slice=session.slice -Type=notify -ExecStart=@bindir@/io.elementary.greeter-compositor - -# 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 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/session/compositor@wayland.service.in b/session/compositor@wayland.service.in new file mode 100644 index 000000000..1559f21be --- /dev/null +++ b/session/compositor@wayland.service.in @@ -0,0 +1,33 @@ +[Unit] +Description=Greeter Compositor +# 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=env GALA_SESSION_TYPE=installer XDG_CURRENT_DESKTOP=Pantheon @bindir@/gala --wayland + +# 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 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/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 aad61651d..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.service +Wants=io.elementary.installer.compositor@wayland.service io.elementary.installer.service diff --git a/session/meson.build b/session/meson.build index 9c1663d3e..18da33d35 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 @@ -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