From 8a04a843f63ec7a741228c36955dc15923c201fe Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sat, 11 Feb 2012 21:55:11 +0000 Subject: [PATCH] Add debian/patches/02-Revert-all-remove-all-GSettings-usage.patch: Use GSettings since we install the extensions system-wide. --- debian/changelog | 4 +- ...evert-all-remove-all-GSettings-usage.patch | 526 ++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 530 insertions(+), 1 deletion(-) create mode 100644 debian/patches/02-Revert-all-remove-all-GSettings-usage.patch diff --git a/debian/changelog b/debian/changelog index fbecd222..ffaeae80 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,8 +20,10 @@ gnome-shell-extensions (3.2.3-1) UNRELEASED; urgency=low - debian/patches/upstream/* - debian/patches/fix-* * Refresh debian/patches/01_status-menu_disable_accounts.patch. + * Add debian/patches/02-Revert-all-remove-all-GSettings-usage.patch: Use + GSettings since we install the extensions system-wide. - -- Michael Biebl Sat, 11 Feb 2012 22:53:09 +0100 + -- Michael Biebl Sat, 11 Feb 2012 22:53:31 +0100 gnome-shell-extensions (3.2.0-1) experimental; urgency=low diff --git a/debian/patches/02-Revert-all-remove-all-GSettings-usage.patch b/debian/patches/02-Revert-all-remove-all-GSettings-usage.patch new file mode 100644 index 00000000..eab1fad3 --- /dev/null +++ b/debian/patches/02-Revert-all-remove-all-GSettings-usage.patch @@ -0,0 +1,526 @@ +From cd9d86ce3938465b4c9f08ae20e351906cdaf44c Mon Sep 17 00:00:00 2001 +From: Michael Biebl +Date: Sat, 11 Feb 2012 22:51:28 +0100 +Subject: [PATCH] Revert "all: remove all GSettings usage" + +This reverts commit 374abed8a13f81d514bcccc2ed4b4f18e7d8d058. +--- + extensions/alternate-tab/Makefile.am | 11 ++ + extensions/alternate-tab/extension.js | 21 +++-- + ...e.shell.extensions.alternate-tab.gschema.xml.in | 18 ++++ + extensions/auto-move-windows/Makefile.am | 11 ++ + extensions/auto-move-windows/extension.js | 10 +- + ...ell.extensions.auto-move-windows.gschema.xml.in | 10 ++ + extensions/dock/Makefile.am | 11 ++ + extensions/dock/extension.js | 101 +++++++++++++++++--- + .../org.gnome.shell.extensions.dock.gschema.xml.in | 38 ++++++++ + extensions/native-window-placement/Makefile.am | 11 ++ + extensions/native-window-placement/extension.js | 25 +++-- + ...tensions.native-window-placement.gschema.xml.in | 26 +++++ + po/POTFILES.in | 4 + + 13 files changed, 259 insertions(+), 38 deletions(-) + create mode 100644 extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in + create mode 100644 extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in + create mode 100644 extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in + create mode 100644 extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in + +diff --git a/extensions/alternate-tab/Makefile.am b/extensions/alternate-tab/Makefile.am +index b8fde76..bade7cd 100644 +--- a/extensions/alternate-tab/Makefile.am ++++ b/extensions/alternate-tab/Makefile.am +@@ -1,3 +1,14 @@ + EXTENSION_ID = alternate-tab + + include ../../extension.mk ++ ++gschemas_in = $(gschemabase).alternate-tab.gschema.xml.in ++ ++@INTLTOOL_XML_NOMERGE_RULE@ ++ ++gsettings_SCHEMAS = $(gschemas_in:.xml.in=.xml) ++ ++@GSETTINGS_RULES@ ++ ++CLEANFILES += $(gschemas_in:.xml.in=.valid) $(gsettings_SCHEMAS) ++EXTRA_DIST += $(gschemas_in) +diff --git a/extensions/alternate-tab/extension.js b/extensions/alternate-tab/extension.js +index ce65bf5..a53b396 100644 +--- a/extensions/alternate-tab/extension.js ++++ b/extensions/alternate-tab/extension.js +@@ -26,9 +26,9 @@ const N_ = function(e) { return e }; + + const POPUP_DELAY_TIMEOUT = 150; // milliseconds + +-// Settings: choose one of MODES, the description is in MESSAGE +-// (master branch has a nice dialog, but we cannot in gnome 3.2) +-const BEHAVIOUR = 'all_thumbnails'; ++const SETTINGS_SCHEMA = 'org.gnome.shell.extensions.alternate-tab'; ++const SETTINGS_BEHAVIOUR_KEY = 'behaviour'; ++const SETTINGS_FIRST_TIME_KEY = 'first-time'; + + const MODES = { + all_thumbnails: function(shellwm, binding, mask, window, backwards) { +@@ -267,8 +267,6 @@ WindowSwitcher.prototype = { + } + }; + +-/* This object is never instantiated in the current branch, but +- I don't trust git merge enough to remove it */ + function AltTabSettingsDialog() { + this._init(); + } +@@ -600,9 +598,16 @@ function init(metadata) { + } + + function doAltTab(shellwm, binding, mask, window, backwards) { +- let behaviour = BEHAVIOUR; +- if(behaviour in MODES) { +- MODES[behaviour](shellwm, binding, mask, window, backwards); ++ let settings = new Gio.Settings({ schema: SETTINGS_SCHEMA }); ++ ++ ++ if(settings.get_boolean(SETTINGS_FIRST_TIME_KEY)) { ++ new AltTabSettingsDialog().open(); ++ } else { ++ let behaviour = settings.get_string(SETTINGS_BEHAVIOUR_KEY); ++ if(behaviour in MODES) { ++ MODES[behaviour](shellwm, binding, mask, window, backwards); ++ } + } + } + +diff --git a/extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in b/extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in +new file mode 100644 +index 0000000..66861ad +--- /dev/null ++++ b/extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in +@@ -0,0 +1,18 @@ ++ ++ ++ ++ ++ ++ ++ ++ 'all_thumbnails' ++ <_summary>The alt tab behaviour. ++ <_description>Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and workspace_icons. ++ ++ ++ true ++ <_summary>Indicates if Alternate Tab is newly installed ++ <_description>Ask the user for a default behaviour if true. ++ ++ ++ +diff --git a/extensions/auto-move-windows/Makefile.am b/extensions/auto-move-windows/Makefile.am +index a0bca70..be6e7bc 100644 +--- a/extensions/auto-move-windows/Makefile.am ++++ b/extensions/auto-move-windows/Makefile.am +@@ -1,3 +1,14 @@ + EXTENSION_ID = auto-move-windows + + include ../../extension.mk ++ ++gschemas_in = $(gschemabase).auto-move-windows.gschema.xml.in ++ ++@INTLTOOL_XML_NOMERGE_RULE@ ++ ++gsettings_SCHEMAS = $(gschemas_in:.xml.in=.xml) ++ ++@GSETTINGS_RULES@ ++ ++CLEANFILES += $(gschemas_in:.xml.in=.valid) $(gsettings_SCHEMAS) ++EXTRA_DIST += $(gschemas_in) +diff --git a/extensions/auto-move-windows/extension.js b/extensions/auto-move-windows/extension.js +index b08b0e3..fe5d7f9 100644 +--- a/extensions/auto-move-windows/extension.js ++++ b/extensions/auto-move-windows/extension.js +@@ -11,9 +11,8 @@ const St = imports.gi.St; + + const Main = imports.ui.main; + +-// list of applications and workspace pairs +-// format: "desktop-file-id.desktop:" +-const APPLICATIONS = [ ]; ++const SETTINGS_SCHEMA = 'org.gnome.shell.extensions.auto-move-windows'; ++const SETTINGS_KEY = 'application-list'; + + function WindowMover() { + this._init(); +@@ -21,6 +20,7 @@ function WindowMover() { + + WindowMover.prototype = { + _init: function() { ++ this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA }); + this._windowTracker = Shell.WindowTracker.get_default(); + + let display = global.screen.get_display(); +@@ -46,7 +46,7 @@ WindowMover.prototype = { + if (!this._windowTracker.is_window_interesting(window)) + return; + +- let spaces = APPLICATIONS; ++ let spaces = this._settings.get_strv(SETTINGS_KEY); + + let app = this._windowTracker.get_window_app(window); + if (!app) { +@@ -159,4 +159,4 @@ function enable() { + function disable() { + Main._checkWorkspaces = prevCheckWorkspaces; + winMover.destroy(); +-} ++} +\ No newline at end of file +diff --git a/extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in b/extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in +new file mode 100644 +index 0000000..59753dc +--- /dev/null ++++ b/extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in +@@ -0,0 +1,10 @@ ++ ++ ++ ++ ++ [ ] ++ <_summary>Application and workspace list ++ <_description>A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number ++ ++ ++ +diff --git a/extensions/dock/Makefile.am b/extensions/dock/Makefile.am +index 2531858..827f81c 100644 +--- a/extensions/dock/Makefile.am ++++ b/extensions/dock/Makefile.am +@@ -1,3 +1,14 @@ + EXTENSION_ID = dock + + include ../../extension.mk ++ ++gschemas_in = $(gschemabase).dock.gschema.xml.in ++ ++@INTLTOOL_XML_NOMERGE_RULE@ ++ ++gsettings_SCHEMAS = $(gschemas_in:.xml.in=.xml) ++ ++@GSETTINGS_RULES@ ++ ++CLEANFILES += $(gschemas_in:.xml.in=.valid) $(gsettings_SCHEMAS) ++EXTRA_DIST += $(gschemas_in) +diff --git a/extensions/dock/extension.js b/extensions/dock/extension.js +index d851bb8..cc53827 100644 +--- a/extensions/dock/extension.js ++++ b/extensions/dock/extension.js +@@ -25,6 +25,15 @@ const AltTab = imports.ui.altTab; + const Gettext = imports.gettext.domain('gnome-shell-extensions'); + const _ = Gettext.gettext; + ++// Settings ++const DOCK_SETTINGS_SCHEMA = 'org.gnome.shell.extensions.dock'; ++const DOCK_POSITION_KEY = 'position'; ++const DOCK_SIZE_KEY = 'size'; ++const DOCK_HIDE_KEY = 'autohide'; ++const DOCK_EFFECTHIDE_KEY = 'hide-effect'; ++const DOCK_AUTOHIDE_ANIMATION_TIME_KEY = 'hide-effect-duration'; ++ ++ + //hide + //const autohide_animation_time = 0.3; + +@@ -40,15 +49,6 @@ const AutoHideEffect = { + MOVE: 2 + }; + +-// Settings +-const DOCK_POSITION = PositionMode.RIGHT; +-const DOCK_SIZE = 48; +-const DOCK_AUTOHIDE = true; +-const DOCK_EFFECTHIDE = AutoHideEffect.MOVE; +-const DOCK_AUTOHIDE_ANIMATION_TIME = 0.3; +-// Do not change anything below this line (it is intentionally duplicate to keep in +-// sync with master branch) +- + let position = PositionMode.RIGHT; + let dockicon_size = 48; + let hideable = true; +@@ -340,11 +340,15 @@ Dock.prototype = { + this._favorites = []; + + // Load Settings +- position = DOCK_POSITION; +- dockicon_size = DOCK_SIZE; +- hideDock = hideable = DOCK_AUTOHIDE; +- hideEffect = DOCK_EFFECTHIDE; +- autohide_animation_time = DOCK_AUTOHIDE_ANIMATION_TIME; ++ this._settings = new Gio.Settings({ schema: DOCK_SETTINGS_SCHEMA }); ++ position = this._settings.get_enum(DOCK_POSITION_KEY); ++ dockicon_size = this._settings.get_int(DOCK_SIZE_KEY); ++ hideDock = hideable = this._settings.get_boolean(DOCK_HIDE_KEY); ++ hideEffect = this._settings.get_enum(DOCK_EFFECTHIDE_KEY); ++ autohide_animation_time = this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY); ++ //global.log("POSITION: " + position); ++ //global.log("dockicon_size: " + dockicon_size); ++ + + this._spacing = 4; + this._item_size = dockicon_size; +@@ -378,6 +382,72 @@ Dock.prototype = { + })); + Main.layoutManager.addChrome(this.actor); + ++ //hidden ++ this._settings.connect('changed::'+DOCK_POSITION_KEY, Lang.bind(this, function (){ ++ if (!this._settings) ++ return; ++ ++ let primary = Main.layoutManager.primaryMonitor; ++ position = this._settings.get_enum(DOCK_POSITION_KEY); ++ this.actor.y=primary.y; ++ this._redisplay(); ++ })); ++ ++ this._settings.connect('changed::'+DOCK_SIZE_KEY, Lang.bind(this, function (){ ++ if (!this._settings) ++ return; ++ ++ dockicon_size = this._settings.get_int(DOCK_SIZE_KEY); ++ this._redisplay(); ++ })); ++ ++ this._settings.connect('changed::'+DOCK_HIDE_KEY, Lang.bind(this, function (){ ++ if (!this._settings) ++ return; ++ ++ hideable = this._settings.get_boolean(DOCK_HIDE_KEY); ++ if (hideable){ ++ hideDock=false; ++ this._hideDock(); ++ } else { ++ hideDock=true; ++ this._showDock(); ++ } ++ })); ++ ++ this._settings.connect('changed::'+DOCK_EFFECTHIDE_KEY, Lang.bind(this, function () { ++ if (!this._settings) ++ return; ++ ++ hideEffect = this._settings.get_enum(DOCK_EFFECTHIDE_KEY); ++ ++ switch (hideEffect) { ++ case AutoHideEffect.RESCALE: ++ this._item_size=dockicon_size; ++ break; ++ case AutoHideEffect.RESIZE: ++ this.actor.set_scale (1,1); ++ break; ++ case AutoHideEffect.MOVE: ++ ; ++ } ++ this.actor.disconnect(this._leave_event); ++ this.actor.disconnect(this._enter_event); ++ ++ this._selectFunctionsHide (); ++ ++ this._leave_event = this.actor.connect('leave-event', Lang.bind(this, this._hideDock)); ++ this._enter_event = this.actor.connect('enter-event', Lang.bind(this, this._showDock)); ++ this._redisplay(); ++ })); ++ ++ this._settings.connect('changed::'+DOCK_AUTOHIDE_ANIMATION_TIME_KEY, Lang.bind(this,function (){ ++ if (!this._settings) ++ return; ++ ++ autohide_animation_time = this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY); ++ })); ++ + this._leave_event = this.actor.connect('leave-event', Lang.bind(this, this._hideDock)); + this._enter_event = this.actor.connect('enter-event', Lang.bind(this, this._showDock)); + +@@ -413,13 +483,14 @@ Dock.prototype = { + this.actor.destroy(); + + // Break reference cycles ++ this._settings = null; + this._appSystem = null; + this._tracker = null; + }, + + // fuctions hide + _restoreHideDock: function(){ +- hideable = DOCK_AUTOHIDE; ++ hideable = this._settings.get_boolean(DOCK_HIDE_KEY); + }, + + _disableHideDock: function (){ +diff --git a/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in b/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in +new file mode 100644 +index 0000000..351c9a7 +--- /dev/null ++++ b/extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in +@@ -0,0 +1,38 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 'right' ++ <_summary>Position of the dock ++ <_description>Sets the position of the dock in the screen. Allowed values are 'right' or 'left' ++ ++ ++ 48 ++ <_summary>Icon size ++ <_description>Sets icon size of the dock. ++ ++ ++ true ++ <_summary>Enable/disable autohide ++ ++ ++ 'resize' ++ <_summary>Autohide effect ++ <_description>Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale' ++ ++ ++ 0.3 ++ <_summary>Autohide duration ++ <_description>Sets the time duration of the autohide effect. ++ ++ ++ +diff --git a/extensions/native-window-placement/Makefile.am b/extensions/native-window-placement/Makefile.am +index c53a614..0d6c4bc 100644 +--- a/extensions/native-window-placement/Makefile.am ++++ b/extensions/native-window-placement/Makefile.am +@@ -1,3 +1,14 @@ + EXTENSION_ID = native-window-placement + + include ../../extension.mk ++ ++gschemas_in = $(gschemabase).native-window-placement.gschema.xml.in ++ ++@INTLTOOL_XML_NOMERGE_RULE@ ++ ++gsettings_SCHEMAS = $(gschemas_in:.xml.in=.xml) ++ ++@GSETTINGS_RULES@ ++ ++CLEANFILES += $(gschemas_in:.xml.in=.valid) $(gsettings_SCHEMAS) ++EXTRA_DIST += $(gschemas_in) +diff --git a/extensions/native-window-placement/extension.js b/extensions/native-window-placement/extension.js +index 7031ce9..67bc34f 100644 +--- a/extensions/native-window-placement/extension.js ++++ b/extensions/native-window-placement/extension.js +@@ -25,12 +25,6 @@ const WindowPlacementStrategy = { + GRID: 1, + }; + +-/* Begin user settings */ +-const PLACEMENT_STRATEGY = WindowPlacementStrategy.NATURAL; +-const USE_MORE_SCREEN = true; +-const WINDOW_CAPTIONS_ON_TOP = true; +-/* End user settings - do not change anything below this line */ +- + // testing settings for natural window placement strategy: + const WINDOW_PLACEMENT_NATURAL_FILLGAPS = true; // enlarge windows at the end to fill gaps // not implemented yet + const WINDOW_PLACEMENT_NATURAL_GRID_FALLBACK = true; // fallback to grid mode if all windows have the same size and positions. // not implemented yet +@@ -123,8 +117,19 @@ function resetState() { + function enable() { + resetState(); + +- let placementStrategy = PLACEMENT_STRATEGY; +- let useMoreScreen = USE_MORE_SCREEN; ++ let settings = new Gio.Settings({ schema: 'org.gnome.shell.extensions.native-window-placement' }); ++ let placementStrategy = settings.get_enum('strategy'); ++ let signalId = settings.connect('changed::strategy', function() { ++ placementStrategy = settings.get_enum('strategy'); ++ // we don't update immediately, we wait for a relayout ++ // (and hope for the best) ++ }); ++ connectedSignals.push({ obj: settings, id: signalId }); ++ let useMoreScreen = settings.get_boolean('use-more-screen'); ++ signalId = settings.connect('changed::use-more-screen', function() { ++ useMoreScreen = settings.get_boolean('use-more-screen'); ++ }); ++ connectedSignals.push({ obj: settings, id: signalId }); + + /** + * _calculateWindowTransformationsNatural: +@@ -410,7 +415,7 @@ function enable() { + } + + /// position window titles on top of windows in overlay //// +- if (WINDOW_CAPTIONS_ON_TOP) { ++ if (settings.get_boolean('window-captions-on-top')) { + winInjections['_init'] = Workspace.WindowOverlay.prototype._init; + Workspace.WindowOverlay.prototype._init = function(windowClone, parentActor) { + let metaWindow = windowClone.metaWindow; +@@ -524,4 +529,4 @@ function disable() { + + function init() { + /* do nothing */ +-} ++} +\ No newline at end of file +diff --git a/extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in b/extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in +new file mode 100644 +index 0000000..873bfd7 +--- /dev/null ++++ b/extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in +@@ -0,0 +1,26 @@ ++ ++ ++ ++ ++ ++ ++ ++ 'natural' ++ <_summary>Window placement strategy ++ <_description>The algorithm used to layout thumbnails in the overview. 'grid' to use the default grid based algorithm, ++ 'natural' to use another one that reflects more the position and size of the actual window ++ ++ ++ true ++ <_summary>Use more screen for windows ++ <_description>Try to use more screen for placing window thumbnails by adapting to screen aspect ratio, and consolidating ++ them further to reduce the bounding box. This setting applies only with the natural placement strategy. ++ ++ ++ true ++ <_summary>Place window captions on top ++ <_description>If true, place window captions on top the respective thumbnail, overriding shell default of placing it at ++ the bottom. Changing this setting requires restarting the shell to have any effect. ++ ++ ++ +diff --git a/po/POTFILES.in b/po/POTFILES.in +index b82572e..d1be54b 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -1,9 +1,13 @@ + extensions/alternative-status-menu/extension.js + extensions/alternate-tab/extension.js ++extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in + extensions/auto-move-windows/extension.js ++extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in + extensions/dock/extension.js ++extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in + extensions/example/extension.js + extensions/gajim/extension.js ++extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in + extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in + extensions/windowsNavigator/extension.js + extensions/xrandr-indicator/extension.js +-- +1.7.9 + diff --git a/debian/patches/series b/debian/patches/series index 63ea7f47..d2e5bd52 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ 01_status-menu_disable_accounts.patch +02-Revert-all-remove-all-GSettings-usage.patch