[gnome-tweak-tool] Choose the schema for window buttons tweak based on the session mode



commit f2d8f43283192149ec4478414e88b538b199a34f
Author: Debarshi Ray <debarshir gnome org>
Date:   Fri Nov 30 17:55:18 2012 +0100

    Choose the schema for window buttons tweak based on the session mode
    
    In addition to the vanilla GNOME Shell modes, it will now have a
    fallback replacement mode, which uses a different schema for the
    button-layout key. Choose the schema depending on the value of the
    org.gnome.Shell.Mode property.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=689358

 gtweak/gshellwrapper.py      |   23 +++++++++++++++++++++--
 gtweak/tweaks/tweak_shell.py |    8 +++++++-
 2 files changed, 28 insertions(+), 3 deletions(-)
---
diff --git a/gtweak/gshellwrapper.py b/gtweak/gshellwrapper.py
index 98c2771..f9eb09f 100644
--- a/gtweak/gshellwrapper.py
+++ b/gtweak/gshellwrapper.py
@@ -44,6 +44,19 @@ class _ShellProxy:
                             'org.gnome.Shell.Extensions',
                             None)
 
+        #GNOME Shell > 3.7.2 added the Mode to the DBus API
+        ver = self.proxy.get_cached_property("Mode")
+        if ver != None:
+            self._mode = ver.unpack()
+        else:
+            js = 'global.session_mode'
+            result, output = self.proxy.Eval('(s)', js)
+            if not result:
+                logging.critical("Error getting shell version via Eval JS")
+                self._mode = "user"
+            else:
+                self._mode = json.loads(output)
+
         #GNOME Shell > 3.3 added the Version to the DBus API and disabled execute_js
         ver = self.proxy.get_cached_property("ShellVersion")
         if ver != None:
@@ -57,6 +70,10 @@ class _ShellProxy:
             self._version = json.loads(output)
 
     @property
+    def mode(self):
+        return self._mode
+
+    @property
     def version(self):
         return self._version
 
@@ -96,6 +113,10 @@ class GnomeShell:
         self._execute_js('const Main = imports.ui.main; Main.loadTheme();')
 
     @property
+    def mode(self):
+        return self._proxy.mode
+
+    @property
     def version(self):
         return self._proxy.version
 
@@ -165,5 +186,3 @@ if __name__ == "__main__":
     print s.list_extensions()
 
     print s == GnomeShellFactory().get_shell()
-
-
diff --git a/gtweak/tweaks/tweak_shell.py b/gtweak/tweaks/tweak_shell.py
index d80b1e3..bd90fc8 100644
--- a/gtweak/tweaks/tweak_shell.py
+++ b/gtweak/tweaks/tweak_shell.py
@@ -32,8 +32,14 @@ from gtweak.widgets import ZipFileChooserButton, GSettingsComboTweak, GSettingsC
 
 class ShowWindowButtons(GSettingsComboTweak):
     def __init__(self, **options):
+        _shell = GnomeShellFactory().get_shell()
+        if _shell.mode in ['gdm', 'initial-setup', 'user']:
+            schema = "org.gnome.shell.overrides"
+        else:
+            schema = "org.gnome.desktop.wm.preferences"
+
         GSettingsComboTweak.__init__(self,
-            "org.gnome.shell.overrides",
+            schema,
             "button-layout",
             ((':close', _("Close Only")),
             (':minimize,close', _("Minimize and Close")),



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