[gnome-shell] screenShield: Do not lock the screen when locked down

commit 199bc85bce87f3739a2918335d53337e3c5d6701
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Mar 17 15:48:22 2017 +0100

    screenShield: Do not lock the screen when locked down
    When using the 'disable-lock-screen' setting to lock down the screen
    lock, the expectation is that users cannot lock the screen. However
    as it turns out, all the setting currently does is hiding the lock
    button in the system menu and making the lock settings in the privacy
    panel inactive. That means that if the 'lock-screen-enabled' setting
    isn't disabled and locked down as well, we will just continue to
    lock the screen on inactivity - not to mention the keyboard shortcut
    that isn't subject to that setting anyway.
    Instead of expecting administrators to hunt down every possible way
    of locking the screen and disabling it individually, we can easily
    handle all cases by refusing to lock the screen when disabled by the
    lockdown settings.

 js/ui/screenShield.js |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index a2f0bf4..fd21fde 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -33,6 +33,9 @@ const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
 const LOCK_ENABLED_KEY = 'lock-enabled';
 const LOCK_DELAY_KEY = 'lock-delay';
+const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
+const DISABLE_LOCK_KEY = 'disable-lock-screen';
 const LOCKED_STATE_STR = 'screenShield.locked';
 // fraction of screen height the arrow must reach before completing
 // the slide up automatically
@@ -541,6 +544,8 @@ const ScreenShield = new Lang.Class({
         this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
         this._settings.connect('changed::' + LOCK_ENABLED_KEY, Lang.bind(this, this._syncInhibitor));
+        this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
         this._isModal = false;
         this._hasLockScreen = false;
         this._isGreeter = false;
@@ -1290,6 +1295,11 @@ const ScreenShield = new Lang.Class({
     lock: function(animate) {
+        if (this._lockSettings.get_boolean(DISABLE_LOCK_KEY)) {
+            log('Screen lock is locked down, not locking') // lock, lock - who's there?
+            return;
+        }
         // Warn the user if we can't become modal
         if (!this._becomeModal()) {
             Main.notifyError(_("Unable to lock"),

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