This repository has been archived by the owner on Mar 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathsettings.js
126 lines (110 loc) · 5.32 KB
/
settings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
* Compiz-alike-windows-effect for GNOME Shell
*
* Copyright (C) 2020
* Mauro Pepe <https://github.com/hermes83/compiz-alike-windows-effect>
*
* This file is part of the gnome-shell extension Compiz-alike-windows-effect.
*
* gnome-shell extension Compiz-alike-windows-effect is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* gnome-shell extension Compiz-alike-windows-effect is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gnome-shell extension Compiz-alike-windows-effect. If not, see
* <http://www.gnu.org/licenses/>.
*/
const Gio = imports.gi.Gio;
const ExtensionUtils = imports.misc.extensionUtils;
const Extension = ExtensionUtils.getCurrentExtension();
const SCHEMA_PATH = 'org.gnome.shell.extensions.com.github.hermes83.compiz-alike-windows-effect';
function get_local_gsettings(schema_path) {
const GioSSS = Gio.SettingsSchemaSource;
let schemaDir = Extension.dir.get_child('schemas');
let schemaSource = GioSSS.get_default();
if (schemaDir.query_exists(null)) {
schemaSource = GioSSS.new_from_directory(
schemaDir.get_path(),
schemaSource,
false
);
}
let schemaObj = schemaSource.lookup(schema_path, true);
if (!schemaObj) {
throw new Error('Schema ' + schema_path + ' could not be found for extension ' + Extension.metadata.uuid);
}
return new Gio.Settings({ settings_schema: schemaObj });
};
function Prefs() {
var settings = this.settings = get_local_gsettings(SCHEMA_PATH);
this.FRICTION = {
key: 'friction',
get: function () { return settings.get_double(this.key); },
set: function (v) { settings.set_double(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.SPRING = {
key: 'spring',
get: function () { return settings.get_double(this.key); },
set: function (v) { settings.set_double(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.MANUAL_RESTORE_FACTOR = {
key: 'manual-restore-factor',
get: function () { return settings.get_double(this.key); },
set: function (v) { settings.set_double(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.SKIP_FRAMES_BEFORE_SPRING_START = {
key: 'skip-frames-before-spring-start',
get: function () { return settings.get_double(this.key); },
set: function (v) { settings.set_double(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.MAXIMIZE_EFFECT_ENABLED = {
key: 'maximize-effect-enabled',
get: function () { return settings.get_boolean(this.key); },
set: function (v) { settings.set_boolean(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.RESIZE_EFFECT_ENABLED = {
key: 'resize-effect-enabled',
get: function () { return settings.get_boolean(this.key); },
set: function (v) { settings.set_boolean(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.MOVE_EFFECT_ENABLED = {
key: 'move-effect-enabled',
get: function () { return settings.get_boolean(this.key); },
set: function (v) { settings.set_boolean(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.X_TILES = {
key: 'x-tiles',
get: function () { return settings.get_double(this.key); },
set: function (v) { settings.set_double(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
this.Y_TILES = {
key: 'y-tiles',
get: function () { return settings.get_double(this.key); },
set: function (v) { settings.set_double(this.key, v); },
changed: function (cb) { return settings.connect('changed::' + this.key, cb); },
disconnect: function () { return settings.disconnect.apply(settings, arguments); },
};
};