[gnome-shell/benzea/systemd-clean-shutdown-with-extension-disabling: 6/6] data: Enable clean session shutdown after gnome-shell failure



commit 26ea9db7710ff2d180b1f8076c1421b8a6b48414
Author: Benjamin Berg <bberg redhat com>
Date:   Mon Nov 25 15:15:01 2019 +0100

    data: Enable clean session shutdown after gnome-shell failure
    
    If the GNOME shell crashes, we run a service that may disable
    extensions. This is important so that users will not be locked out of
    their own session in case an extension is causing crashes.
    
    As this is a very agressive action, we only do so if the session fails
    in the first two minutes. The logic to do so was broken though, and
    would result in an unclean session shutdown.
    
    Fix this by using the newly introduced file %t/gnome-shell-stable and
    using a ConditionPathExists. This avoids any depenencies and therefore
    can cleanly run in parallel to a normal session shutdown.
    
    See
      https://gitlab.gnome.org/GNOME/gnome-session/issues/43
    for a log of the bug happening and the gnome-session part to fix this.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/858

 data/gnome-shell-disable-extensions.service | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/data/gnome-shell-disable-extensions.service b/data/gnome-shell-disable-extensions.service
index d55d7ed879..ad42f079ef 100644
--- a/data/gnome-shell-disable-extensions.service
+++ b/data/gnome-shell-disable-extensions.service
@@ -1,11 +1,13 @@
 [Unit]
 Description=Disable GNOME Shell extensions after failure
+# Note that this unit must not conflict with anything, and must
+# be able to run in parallel with the gnome-session-shutdown.target.
 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
+# We want to disable extensions only in the first two minutes of the session.
+# To do so, we can check that the gnome-shell-stable file does not exist,
+# which is created by gnome-shell after two minutes (and deleted at startup).
+ConditionPathExists=!%t/gnome-shell-stable
 
 [Service]
 Type=simple


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]