classic: Replace mini-extensions with mode-specific overridesSchema

Some default values differ between classic and normal sessions. We
used to implement this by overriding the shell's default values in
mini-extensions (or more precisely: reversing the shell's overrides).
Use a mode-specific overridesSchema instead, which has the advantage
that settings defaults will not change unexpectedly when extensions
are disabled/enabled (for instance during screen locks).

https://bugzilla.gnome.org/show_bug.cgi?id=701717
This commit is contained in:
Florian Müllner
2013-06-08 00:47:30 +02:00
parent 6f572119d8
commit 0ffaf62c4c
13 changed files with 50 additions and 72 deletions
+2 -4
View File
@@ -27,7 +27,7 @@ fi
AC_SUBST([SHELL_VERSION])
dnl keep this in alphabetic order
CLASSIC_EXTENSIONS="apps-menu places-menu alternate-tab default-min-max launch-new-instance static-workspaces window-list"
CLASSIC_EXTENSIONS="apps-menu places-menu alternate-tab launch-new-instance window-list"
DEFAULT_EXTENSIONS="$CLASSIC_EXTENSIONS alternative-status-menu drive-menu windowsNavigator workspace-indicator"
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator"
AC_SUBST(CLASSIC_EXTENSIONS, [$CLASSIC_EXTENSIONS])
@@ -71,7 +71,7 @@ for e in $enable_extensions; do
[AC_MSG_WARN([gnome-desktop-3.0 not found, disabling xrandr-indicator])])
;;
dnl keep this in alphabetic order
alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|default-min-max|drive-menu|example|launch-new-instance|native-window-placement|places-menu|static-workspaces|user-theme|window-list|windowsNavigator|workspace-indicator)
alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|drive-menu|example|launch-new-instance|native-window-placement|places-menu|user-theme|window-list|windowsNavigator|workspace-indicator)
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
;;
*)
@@ -88,13 +88,11 @@ AC_CONFIG_FILES([
extensions/alternative-status-menu/Makefile
extensions/apps-menu/Makefile
extensions/auto-move-windows/Makefile
extensions/default-min-max/Makefile
extensions/drive-menu/Makefile
extensions/example/Makefile
extensions/launch-new-instance/Makefile
extensions/native-window-placement/Makefile
extensions/places-menu/Makefile
extensions/static-workspaces/Makefile
extensions/systemMonitor/Makefile
extensions/user-theme/Makefile
extensions/window-list/Makefile
+8
View File
@@ -28,6 +28,12 @@ theme_DATA = \
$(srcdir)/gnome-classic.css \
$(NULL)
gsettings_in_files = org.gnome.shell.extensions.classic-overrides.gschema.xml.in
gsettings_SCHEMAS = $(gsettings_in_files:.xml.in=.xml)
@INTLTOOL_XML_NOMERGE_RULE@
@GSETTINGS_RULES@
%.desktop.in:%.desktop.in.in
$(AM_V_GEN) sed \
-e "s|\@libexecdir\@|$(libexecdir)|" \
@@ -54,6 +60,7 @@ EXTRA_DIST = \
$(session_in_in_files) \
$(xsession_in_files) \
$(mode_in_files) \
$(gsettings_in_files) \
$(theme_DATA) \
$(NULL)
@@ -62,4 +69,5 @@ CLEANFILES = \
$(session_DATA) \
$(xsession_DATA) \
$(mode_DATA) \
$(gsettings_SCHEMAS) \
$(NULL)
+1
View File
@@ -1,6 +1,7 @@
{
"parentMode": "user",
"stylesheetName": "gnome-classic.css",
"overridesSchema": "org.gnome.shell.extensions.classic-overrides",
"enabledExtensions": [@CLASSIC_EXTENSIONS@],
"panel": { "left": ["activities", "appMenu"],
"center": [],
@@ -0,0 +1,38 @@
<schemalist>
<schema id="org.gnome.shell.extensions.classic-overrides"
path="/org/gnome/shell/extensions/classic-overrides/"
gettext-domain="gnome-shell-extensions">
<key name="attach-modal-dialogs" type="b">
<default>true</default>
<_summary>Attach modal dialog to the parent window</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running
GNOME Shell.
</_description>
</key>
<key name="edge-tiling" type="b">
<default>true</default>
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</_description>
</key>
<key name="workspaces-only-on-primary" type="b">
<default>true</default>
<_summary>Workspaces only on primary monitor</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</_description>
</key>
<key name="focus-change-on-pointer-rest" type="b">
<default>true</default>
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
<description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>
</key>
</schema>
</schemalist>
-3
View File
@@ -1,3 +0,0 @@
EXTENSION_ID = default-min-max
include ../../extension.mk
-20
View File
@@ -1,20 +0,0 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
const Meta = imports.gi.Meta;
const BUTTON_LAYOUT_KEY = 'button-layout';
const EXTENSION_SCHEMA = 'org.gnome.desktop.wm.preferences';
const SHELL_OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
function init(metadata) {
}
function enable() {
// Override gnome-shell's overrides
Meta.prefs_override_preference_schema(BUTTON_LAYOUT_KEY, EXTENSION_SCHEMA);
}
function disable() {
// Restore gnome-shell's overrides
Meta.prefs_override_preference_schema(BUTTON_LAYOUT_KEY, SHELL_OVERRIDES_SCHEMA);
}
@@ -1,11 +0,0 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Default Minimize and Maximize",
"description": "Adds minimize and maximize buttons to the titlebar by default.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
"original-authors": [ "debarshir@gnome.org" ],
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}
@@ -1 +0,0 @@
/* This extensions requires no special styling */
-3
View File
@@ -1,3 +0,0 @@
EXTENSION_ID = static-workspaces
include ../../extension.mk
-18
View File
@@ -1,18 +0,0 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
const Meta = imports.gi.Meta;
function init(metadata) {
}
function enable() {
// Override gnome-shell's overrides
Meta.prefs_override_preference_schema('dynamic-workspaces',
'org.gnome.mutter');
}
function disable() {
// Restore gnome-shell's overrides
Meta.prefs_override_preference_schema('dynamic-workspaces',
'org.gnome.shell.overrides');
}
@@ -1,11 +0,0 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Static workspaces",
"description": "Disable dynamic workspace management.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME Bugzilla instead.",
"original-authors": [ "fmuellner@gnome.org" ],
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}
@@ -1 +0,0 @@
/* This extensions requires no special styling */
+1
View File
@@ -1,6 +1,7 @@
data/gnome-classic.desktop.in
data/gnome-classic.session.desktop.in.in
data/gnome-shell-classic.desktop.in.in
data/org.gnome.shell.extensions.classic-overrides.gschema.xml.in
extensions/alternate-tab/prefs.js
extensions/alternative-status-menu/extension.js
extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in