[gnome-shell] extensionSystem: Add kill-switch setting to disable user extensions
- From: Florian MĂźllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extensionSystem: Add kill-switch setting to disable user extensions
- Date: Thu, 16 Feb 2017 00:38:29 +0000 (UTC)
commit 7395aaf9b45690bbee232852a39d3b3595aa6d99
Author: Florian MĂźllner <fmuellner gnome org>
Date: Mon Dec 14 23:52:38 2015 +0100
extensionSystem: Add kill-switch setting to disable user extensions
When gnome-shell fails to start on login, gnome-session tries to
re-launch it again with all extensions disabled. This is currently
implemented by clearing the list of enabled extensions, which means
the user needs to re-enable their extensions manually again.
To make this process less annoying, add a single 'kill-switch' setting
gnome-session can use without interfering with the user setting.
https://bugzilla.gnome.org/show_bug.cgi?id=778664
data/org.gnome.shell.gschema.xml.in | 8 ++++++++
js/ui/extensionSystem.js | 13 ++++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
index c1e6b21..7348d09 100644
--- a/data/org.gnome.shell.gschema.xml.in
+++ b/data/org.gnome.shell.gschema.xml.in
@@ -21,6 +21,14 @@
EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
</description>
</key>
+ <key name="disable-user-extensions" type="b">
+ <default>false</default>
+ <summary>Disable user extensions</summary>
+ <description>
+ Disable all extensions the user has enabled without affecting
+ the 'enabled-extension' setting.
+ </description>
+ </key>
<key name="disable-extension-version-validation" type="b">
<default>true</default>
<summary>Disables the validation of extension version compatibility</summary>
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index ba33222..a4dc29e 100644
--- a/js/ui/extensionSystem.js
+++ b/js/ui/extensionSystem.js
@@ -38,6 +38,7 @@ const connect = Lang.bind(_signals, _signals.connect);
const disconnect = Lang.bind(_signals, _signals.disconnect);
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
+const DISABLE_USER_EXTENSIONS_KEY = 'disable-user-extensions';
const EXTENSION_DISABLE_VERSION_CHECK_KEY = 'disable-extension-version-validation';
var initted = false;
@@ -238,11 +239,16 @@ function initExtension(uuid) {
}
function getEnabledExtensions() {
- let extensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
- if (!Array.isArray(Main.sessionMode.enabledExtensions))
+ let extensions;
+ if (Array.isArray(Main.sessionMode.enabledExtensions))
+ extensions = Main.sessionMode.enabledExtensions;
+ else
+ extensions = [];
+
+ if (global.settings.get_boolean(DISABLE_USER_EXTENSIONS_KEY))
return extensions;
- return Main.sessionMode.enabledExtensions.concat(extensions);
+ return extensions.concat(global.settings.get_strv(ENABLED_EXTENSIONS_KEY));
}
function onEnabledExtensionsChanged() {
@@ -288,6 +294,7 @@ function _onVersionValidationChanged() {
function _loadExtensions() {
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
+ global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged);
enabledExtensions = getEnabledExtensions();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]