data: Update systemd units
The existing units were never used as the corresponding support was never merged into gnome-session. This commits updates units to be usable with the newer gnome-session unit definitions. Also added is appropriate failure/restart logic including the ability to disable extensions. Note that extensions will only be disabled if a failure happens in the first two minutes after login. https://gitlab.gnome.org/GNOME/gnome-session/merge_requests/13 https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/507
This commit is contained in:
parent
50055004f5
commit
7e00d22bfa
14
data/gnome-shell-disable-extensions.service
Normal file
14
data/gnome-shell-disable-extensions.service
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Disable GNOME Shell extensions after failure
|
||||||
|
DefaultDependencies=no
|
||||||
|
|
||||||
|
# Only disable extensions for a short period of time after login.
|
||||||
|
# This means we err on the side of failing the first login after a broken
|
||||||
|
# extension was installed.
|
||||||
|
Requisite=gnome-session-stable.timer
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
# Disable extensions
|
||||||
|
ExecStart=gsettings set org.gnome.shell disable-user-extensions true
|
||||||
|
Restart=no
|
26
data/gnome-shell-wayland.service.in
Normal file
26
data/gnome-shell-wayland.service.in
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell on Wayland
|
||||||
|
# On wayland, force a session shutdown
|
||||||
|
OnFailure=gnome-shell-disable-extensions.service 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
|
||||||
|
|
||||||
|
# The units already conflict because they use the same BusName
|
||||||
|
#Conflicts=gnome-shell-x11.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=dbus
|
||||||
|
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
|
@ -1,5 +1,10 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=GNOME Shell (wayland sync point)
|
Description=GNOME Shell on Wayland
|
||||||
After=gnome-shell.service
|
DefaultDependencies=no
|
||||||
BindsTo=gnome-shell.service
|
|
||||||
Conflicts=gnome-shell-x11.target
|
Requisite=gnome-session-initialized.target
|
||||||
|
PartOf=gnome-session-initialized.target
|
||||||
|
Before=gnome-session-initialized.target
|
||||||
|
|
||||||
|
Requires=gnome-shell-wayland.service
|
||||||
|
After=gnome-shell-wayland.service
|
||||||
|
32
data/gnome-shell-x11.service.in
Normal file
32
data/gnome-shell-x11.service.in
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell on X11
|
||||||
|
# On X11, try to show the GNOME Session Failed screen
|
||||||
|
OnFailure=gnome-shell-disable-extensions.service 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
|
||||||
|
|
||||||
|
# The units already conflict because they use the same BusName
|
||||||
|
#Conflicts=gnome-shell-wayland.service
|
||||||
|
|
||||||
|
# Limit startup frequency more than the default
|
||||||
|
StartLimitIntervalSec=15s
|
||||||
|
StartLimitBurst=3
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=dbus
|
||||||
|
ExecStart=@bindir@/gnome-shell
|
||||||
|
# Exit code 1 means we are probably *not* dealing with an extension failure
|
||||||
|
SuccessExitStatus=1
|
||||||
|
# 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
|
||||||
|
BusName=org.gnome.Shell
|
@ -1,5 +1,10 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=GNOME Shell (x11 sync point)
|
Description=GNOME Shell on X11
|
||||||
After=gnome-shell.service
|
DefaultDependencies=no
|
||||||
BindsTo=gnome-shell.service
|
|
||||||
Conflicts=gnome-shell-wayland.target
|
Requisite=gnome-session-initialized.target
|
||||||
|
PartOf=gnome-session-initialized.target
|
||||||
|
Before=gnome-session-initialized.target
|
||||||
|
|
||||||
|
Requires=gnome-shell-x11.service
|
||||||
|
After=gnome-shell-x11.service
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=GNOME Shell
|
|
||||||
Wants=gnome-session.service
|
|
||||||
After=graphical-session-pre.target gnome-session-bus.target
|
|
||||||
PartOf=graphical-session.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=dbus
|
|
||||||
ExecStart=@bindir@/gnome-shell
|
|
||||||
Restart=on-failure
|
|
||||||
BusName=org.gnome.Shell
|
|
@ -100,15 +100,23 @@ if have_systemd
|
|||||||
unitconf = configuration_data()
|
unitconf = configuration_data()
|
||||||
unitconf.set('bindir', bindir)
|
unitconf.set('bindir', bindir)
|
||||||
|
|
||||||
unit = configure_file(
|
configure_file(
|
||||||
input: 'gnome-shell.service.in',
|
input: 'gnome-shell-x11.service.in',
|
||||||
output: 'gnome-shell.service',
|
output: 'gnome-shell-x11.service',
|
||||||
configuration: unitconf,
|
configuration: unitconf,
|
||||||
install_dir: systemduserunitdir
|
install_dir: systemduserunitdir
|
||||||
)
|
)
|
||||||
|
|
||||||
units = files('gnome-shell-wayland.target',
|
configure_file(
|
||||||
'gnome-shell-x11.target')
|
input: 'gnome-shell-wayland.service.in',
|
||||||
|
output: 'gnome-shell-wayland.service',
|
||||||
|
configuration: unitconf,
|
||||||
|
install_dir: systemduserunitdir
|
||||||
|
)
|
||||||
|
|
||||||
|
units = files('gnome-shell-x11.target',
|
||||||
|
'gnome-shell-wayland.target',
|
||||||
|
'gnome-shell-disable-extensions.service')
|
||||||
|
|
||||||
install_data(units, install_dir: systemduserunitdir)
|
install_data(units, install_dir: systemduserunitdir)
|
||||||
endif
|
endif
|
||||||
|
Loading…
Reference in New Issue
Block a user