[gnome-tweak-tool] Generalize support for shell's schema overrides
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tweak-tool] Generalize support for shell's schema overrides
- Date: Fri, 7 Jun 2013 23:04:50 +0000 (UTC)
commit 559b222e1748da11eb8a9bc0760ff239bb3ed460
Author: Florian Müllner <fmuellner gnome org>
Date: Thu Jun 6 19:07:07 2013 +0200
Generalize support for shell's schema overrides
GNOME Shell overrides some settings to use different default values
than standalone mutter. With the introduction of classic mode, things
got a little more complicated, as some of the overrides were reverted
again by extensions - to support either mode, we needed to pick the
right schema for all affected settings.
The shell has now introduced mode-specific overrides, and classic mode
started to use that instead of extensions; this means we will now need
to adapt all settings that *both* normal and classic mode override.
However rather than adjusting the affected settings, the new approach
allows us to generalize the support for schema overrides depending on
the current mode - this should allow us to handle future changes to
overrides in either normal or classic mode automatically.
https://bugzilla.gnome.org/show_bug.cgi?id=701760
gtweak/tweaks/tweak_shell.py | 25 ++++++-------------------
gtweak/tweaks/tweak_windows.py | 2 +-
gtweak/widgets.py | 20 ++++++++++++++++++++
3 files changed, 27 insertions(+), 20 deletions(-)
---
diff --git a/gtweak/tweaks/tweak_shell.py b/gtweak/tweaks/tweak_shell.py
index 3f4bb33..d6ffd35 100644
--- a/gtweak/tweaks/tweak_shell.py
+++ b/gtweak/tweaks/tweak_shell.py
@@ -28,28 +28,20 @@ from gtweak.utils import walk_directories, extract_zip_file, make_combo_list_wit
from gtweak.gsettings import GSettingsSetting, GSettingsMissingError, GSettingsFakeSetting
from gtweak.gshellwrapper import GnomeShellFactory
from gtweak.tweakmodel import Tweak, TweakGroup, TWEAK_GROUP_THEME, TWEAK_GROUP_SHELL, TWEAK_SORT_LAST
-from gtweak.widgets import FileChooserButton, GSettingsComboTweak, GSettingsComboEnumTweak,
GSettingsSwitchTweak, build_label_beside_widget, build_horizontal_sizegroup, build_combo_box_text,
UI_BOX_SPACING
+from gtweak.widgets import FileChooserButton, GSettingsComboTweak, GSettingsComboEnumTweak,
GSettingsSwitchTweak, adjust_schema_for_overrides, build_label_beside_widget, build_horizontal_sizegroup,
build_combo_box_text, UI_BOX_SPACING
_shell = GnomeShellFactory().get_shell()
_shell_loaded = _shell is not None
class ShowWindowButtons(GSettingsComboTweak):
def __init__(self, **options):
- if (_shell is not None) and (_shell.mode in ['gdm', 'initial-setup', 'user']):
- schema = "org.gnome.shell.overrides"
- filename = "org.gnome.shell.gschema.xml"
- else:
- schema = "org.gnome.desktop.wm.preferences"
- filename = None
-
GSettingsComboTweak.__init__(self,
- schema,
+ "org.gnome.desktop.wm.preferences",
"button-layout",
((':close', _("Close Only")),
(':minimize,close', _("Minimize and Close")),
(':maximize,close', _("Maximize and Close")),
(':minimize,maximize,close', _("All"))),
- schema_filename=filename,
loaded=_shell_loaded,
**options)
@@ -214,16 +206,11 @@ class StaticWorkspaceTweak(Tweak):
NUM_WORKSPACES_SCHEMA = "org.gnome.desktop.wm.preferences"
NUM_WORKSPACES_KEY = "num-workspaces"
- if (_shell is not None) and (_shell.mode in ['gdm', 'initial-setup', 'user']):
- DYNAMIC_SCHEMA = "org.gnome.shell.overrides"
- DYNAMIC_SCHEMA_FILENAME = "org.gnome.shell.gschema.xml"
- else:
- DYNAMIC_SCHEMA = "org.gnome.mutter"
- DYNAMIC_SCHEMA_FILENAME = None
-
DYNAMIC_KEY = "dynamic-workspaces"
+ DYNAMIC_SCHEMA = "org.gnome.mutter"
def __init__(self, **options):
+ schema = adjust_schema_for_overrides(self.DYNAMIC_SCHEMA, self.DYNAMIC_KEY, options)
Tweak.__init__(self, _("Dynamic workspaces"), _("Disable gnome-shell dynamic workspace management,
use static workspaces"), **options)
try:
@@ -233,7 +220,7 @@ class StaticWorkspaceTweak(Tweak):
nwsettings = GSettingsFakeSetting()
try:
- dsettings = GSettingsSetting(self.DYNAMIC_SCHEMA, schema_filename=self.DYNAMIC_SCHEMA_FILENAME,
**options)
+ dsettings = GSettingsSetting(schema, **options)
except GSettingsMissingError:
self.loaded = False
dsettings = GSettingsFakeSetting()
@@ -273,6 +260,6 @@ TWEAK_GROUPS = (
GSettingsComboEnumTweak("org.gnome.settings-daemon.plugins.power", "lid-close-ac-action",
size_group=sg),
GSettingsComboEnumTweak("org.gnome.settings-daemon.plugins.power", "button-power",
size_group=sg),
GSettingsComboEnumTweak("org.gnome.settings-daemon.plugins.xrandr", "default-monitors-setup",
size_group=sg),
- GSettingsSwitchTweak("org.gnome.shell.overrides", "workspaces-only-on-primary",
schema_filename="org.gnome.shell.gschema.xml", loaded=_shell_loaded),
+ GSettingsSwitchTweak("org.gnome.mutter", "workspaces-only-on-primary",
schema_filename="org.gnome.shell.gschema.xml", loaded=_shell_loaded),
StaticWorkspaceTweak(size_group=sg, loaded=_shell_loaded)),
)
diff --git a/gtweak/tweaks/tweak_windows.py b/gtweak/tweaks/tweak_windows.py
index 4838ec5..8ea41b5 100644
--- a/gtweak/tweaks/tweak_windows.py
+++ b/gtweak/tweaks/tweak_windows.py
@@ -51,5 +51,5 @@ TWEAKS = (
group_name=TWEAK_GROUP_WINDOWS),
GSettingsSwitchTweak("org.gnome.desktop.wm.preferences", "resize-with-right-button",
group_name=TWEAK_GROUP_WINDOWS),
GSettingsSwitchTweak("org.gnome.desktop.wm.preferences", "raise-on-click",
group_name=TWEAK_GROUP_WINDOWS),
- GSettingsSwitchTweak("org.gnome.shell.overrides", "attach-modal-dialogs",
schema_filename="org.gnome.shell.gschema.xml", group_name=TWEAK_GROUP_WINDOWS),
+ GSettingsSwitchTweak("org.gnome.mutter", "attach-modal-dialogs", group_name=TWEAK_GROUP_WINDOWS),
)
diff --git a/gtweak/widgets.py b/gtweak/widgets.py
index 8bf4855..072081e 100644
--- a/gtweak/widgets.py
+++ b/gtweak/widgets.py
@@ -24,8 +24,10 @@ from gtweak.tweakmodel import Tweak
from gtweak.gsettings import GSettingsSetting, GSettingsFakeSetting, GSettingsMissingError
from gtweak.gtksettings import GtkSettingsManager
from gtweak.gconf import GConfSetting
+from gtweak.gshellwrapper import GnomeShellFactory
UI_BOX_SPACING = 4
+_shell = GnomeShellFactory().get_shell()
def build_label_beside_widget(txt, *widget, **kwargs):
"""
@@ -118,8 +120,26 @@ def build_tight_button(stock_id):
button.get_style_context().add_provider(provider, 600)
return button
+def adjust_schema_for_overrides(originalSchema, key, options):
+ if (_shell is None):
+ return originalSchema
+
+ if (_shell.mode == 'classic'):
+ overridesSchema = "org.gnome.shell.extensions.classic-overrides"
+ overridesFile = None
+ else:
+ overridesSchema = "org.gnome.shell.overrides"
+ overridesFile = "org.gnome.shell.gschema.xml"
+
+ if (key in Gio.Settings(overridesSchema).list_keys()):
+ options['schema_filename'] = overridesFile
+ return overridesSchema
+ return originalSchema
+
+
class _GSettingsTweak(Tweak):
def __init__(self, schema_name, key_name, **options):
+ schema_name = adjust_schema_for_overrides(schema_name, key_name, options)
self.schema_name = schema_name
self.key_name = key_name
try:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]