all: remove all GSettings usage
Since GSettings is not supported in extensions in 3.2, all settings have been replaced by constants in JS files (except for user-theme, whose only purpose is to actually bridge GSettings to the shell). Customizations are still supported in master, and distributions packaging these extensions for system-wide install may consider reverting this bug.
This commit is contained in:
@@ -1,14 +1,3 @@
|
||||
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)
|
||||
|
||||
@@ -26,9 +26,9 @@ const N_ = function(e) { return e };
|
||||
|
||||
const POPUP_DELAY_TIMEOUT = 150; // milliseconds
|
||||
|
||||
const SETTINGS_SCHEMA = 'org.gnome.shell.extensions.alternate-tab';
|
||||
const SETTINGS_BEHAVIOUR_KEY = 'behaviour';
|
||||
const SETTINGS_FIRST_TIME_KEY = 'first-time';
|
||||
// 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 MODES = {
|
||||
all_thumbnails: function(shellwm, binding, mask, window, backwards) {
|
||||
@@ -267,6 +267,8 @@ 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();
|
||||
}
|
||||
@@ -598,16 +600,9 @@ function init(metadata) {
|
||||
}
|
||||
|
||||
function doAltTab(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);
|
||||
}
|
||||
let behaviour = BEHAVIOUR;
|
||||
if(behaviour in MODES) {
|
||||
MODES[behaviour](shellwm, binding, mask, window, backwards);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<schemalist gettext-domain="gnome-shell-extensions">
|
||||
<enum id="org.gnome.shell.extensions.alternate-tab.BehaviourMode">
|
||||
<value value="1" nick="all_thumbnails"/>
|
||||
<value value="2" nick="workspace_icons"/>
|
||||
</enum>
|
||||
<schema id="org.gnome.shell.extensions.alternate-tab" path="/org/gnome/shell/extensions/alternate-tab/">
|
||||
<key name="behaviour" enum="org.gnome.shell.extensions.alternate-tab.BehaviourMode">
|
||||
<default>'all_thumbnails'</default>
|
||||
<_summary>The alt tab behaviour.</_summary>
|
||||
<_description>Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails and workspace_icons.</_description>
|
||||
</key>
|
||||
<key type="b" name="first-time">
|
||||
<default>true</default>
|
||||
<_summary>Indicates if Alternate Tab is newly installed</_summary>
|
||||
<_description>Ask the user for a default behaviour if true.</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
@@ -1,14 +1,3 @@
|
||||
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)
|
||||
|
||||
@@ -11,8 +11,9 @@ const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
|
||||
const SETTINGS_SCHEMA = 'org.gnome.shell.extensions.auto-move-windows';
|
||||
const SETTINGS_KEY = 'application-list';
|
||||
// list of applications and workspace pairs
|
||||
// format: "desktop-file-id.desktop:<num>"
|
||||
const APPLICATIONS = [ ];
|
||||
|
||||
function WindowMover() {
|
||||
this._init();
|
||||
@@ -20,7 +21,6 @@ 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 = this._settings.get_strv(SETTINGS_KEY);
|
||||
let spaces = APPLICATIONS;
|
||||
|
||||
let app = this._windowTracker.get_window_app(window);
|
||||
if (!app) {
|
||||
@@ -159,4 +159,4 @@ function enable() {
|
||||
function disable() {
|
||||
Main._checkWorkspaces = prevCheckWorkspaces;
|
||||
winMover.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
<schemalist gettext-domain="gnome-shell-extensions">
|
||||
<schema id="org.gnome.shell.extensions.auto-move-windows" path="/org/gnome/shell/extensions/auto-move-windows/">
|
||||
<key name="application-list" type="as">
|
||||
<!-- FIXME: should be a(su), when JS supports more of GVariant -->
|
||||
<default>[ ]</default>
|
||||
<_summary>Application and workspace list</_summary>
|
||||
<_description>A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
@@ -1,14 +1,3 @@
|
||||
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)
|
||||
|
||||
@@ -25,15 +25,6 @@ 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;
|
||||
|
||||
@@ -49,6 +40,15 @@ 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,15 +340,11 @@ Dock.prototype = {
|
||||
this._favorites = [];
|
||||
|
||||
// Load Settings
|
||||
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);
|
||||
|
||||
position = DOCK_POSITION;
|
||||
dockicon_size = DOCK_SIZE;
|
||||
hideDock = hideable = DOCK_AUTOHIDE;
|
||||
hideEffect = DOCK_EFFECTHIDE;
|
||||
autohide_animation_time = DOCK_AUTOHIDE_ANIMATION_TIME;
|
||||
|
||||
this._spacing = 4;
|
||||
this._item_size = dockicon_size;
|
||||
@@ -382,72 +378,6 @@ 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));
|
||||
|
||||
@@ -483,14 +413,13 @@ Dock.prototype = {
|
||||
this.actor.destroy();
|
||||
|
||||
// Break reference cycles
|
||||
this._settings = null;
|
||||
this._appSystem = null;
|
||||
this._tracker = null;
|
||||
},
|
||||
|
||||
// fuctions hide
|
||||
_restoreHideDock: function(){
|
||||
hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
|
||||
hideable = DOCK_AUTOHIDE;
|
||||
},
|
||||
|
||||
_disableHideDock: function (){
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
<schemalist gettext-domain="gnome-shell-extensions">
|
||||
<enum id='org.gnome.shell.extensions.dock.PositionMode'>
|
||||
<value nick='left' value='0'/>
|
||||
<value nick='right' value='1'/>
|
||||
</enum>
|
||||
<enum id='org.gnome.shell.extensions.dock.AutoHideEffect'>
|
||||
<value nick='resize' value='0'/>
|
||||
<value nick='rescale' value='1'/>
|
||||
<value nick='move' value='2'/>
|
||||
</enum>
|
||||
|
||||
<schema id="org.gnome.shell.extensions.dock" path="/org/gnome/shell/extensions/dock/">
|
||||
<key name="position" enum="org.gnome.shell.extensions.dock.PositionMode">
|
||||
<default>'right'</default>
|
||||
<_summary>Position of the dock</_summary>
|
||||
<_description>Sets the position of the dock in the screen. Allowed values are 'right' or 'left'</_description>
|
||||
</key>
|
||||
<key name="size" type="i">
|
||||
<default>48</default>
|
||||
<_summary>Icon size</_summary>
|
||||
<_description>Sets icon size of the dock.</_description>
|
||||
</key>
|
||||
<key name="autohide" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Enable/disable autohide</_summary>
|
||||
</key>
|
||||
<key name="hide-effect" enum="org.gnome.shell.extensions.dock.AutoHideEffect">
|
||||
<default>'resize'</default>
|
||||
<_summary>Autohide effect</_summary>
|
||||
<_description>Sets the effect of the hide dock. Allowed values are 'resize' or 'rescale'</_description>
|
||||
</key>
|
||||
<key name="hide-effect-duration" type="d">
|
||||
<default>0.3</default>
|
||||
<_summary>Autohide duration</_summary>
|
||||
<_description>Sets the time duration of the autohide effect.</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
@@ -1,14 +1,3 @@
|
||||
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)
|
||||
|
||||
@@ -25,6 +25,12 @@ 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
|
||||
@@ -117,19 +123,8 @@ function resetState() {
|
||||
function enable() {
|
||||
resetState();
|
||||
|
||||
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 });
|
||||
let placementStrategy = PLACEMENT_STRATEGY;
|
||||
let useMoreScreen = USE_MORE_SCREEN;
|
||||
|
||||
/**
|
||||
* _calculateWindowTransformationsNatural:
|
||||
@@ -415,7 +410,7 @@ function enable() {
|
||||
}
|
||||
|
||||
/// position window titles on top of windows in overlay ////
|
||||
if (settings.get_boolean('window-captions-on-top')) {
|
||||
if (WINDOW_CAPTIONS_ON_TOP) {
|
||||
winInjections['_init'] = Workspace.WindowOverlay.prototype._init;
|
||||
Workspace.WindowOverlay.prototype._init = function(windowClone, parentActor) {
|
||||
let metaWindow = windowClone.metaWindow;
|
||||
@@ -529,4 +524,4 @@ function disable() {
|
||||
|
||||
function init() {
|
||||
/* do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
<schemalist gettext-domain="gnome-shell-extensions">
|
||||
<enum id="org.gnome.shell.extensions.native-window-placement.strategy">
|
||||
<value nick="natural" value="0" />
|
||||
<value nick="grid" value="1" />
|
||||
</enum>
|
||||
<schema id="org.gnome.shell.extensions.native-window-placement" path="/org/gnome/shell/extensions/native-window-placement/">
|
||||
<key name="strategy" enum="org.gnome.shell.extensions.native-window-placement.strategy">
|
||||
<default>'natural'</default>
|
||||
<_summary>Window placement strategy</_summary>
|
||||
<_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</_description>
|
||||
</key>
|
||||
<key name="use-more-screen" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Use more screen for windows</_summary>
|
||||
<_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.</_description>
|
||||
</key>
|
||||
<key name="window-captions-on-top" type="b">
|
||||
<default>true</default>
|
||||
<_summary>Place window captions on top</_summary>
|
||||
<_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.</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
@@ -1,13 +1,9 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user