Add kill and restore binding functions

This isn't fully robust as a crash will lose user set values. A solution would
be to store the user values in gsettings as not to lose them.
This commit is contained in:
Tor Hedin Brønner
2017-12-08 09:43:44 +01:00
parent 2898fb2062
commit 33dd6932d3
+24
View File
@@ -130,6 +130,30 @@ function init() {
loadRcFile();
}
let originalBindings = new Map();
function killKeybinding (key, settings) {
settings = settings
|| new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings"});
if (!originalBindings.get(settings))
originalBindings.set(settings, {});
let store = originalBindings.get(settings);
store[key] = settings.get_user_value(key);
settings.set_strv(key, []);
}
function restoreKeybindings() {
for (let [settings, store] of originalBindings) {
for (let key in store) {
// Reset the key to its default value
settings.reset(key);
let userValue = store[key];
if (userValue) {
settings.set_strv(key, userValue.unpack());
}
}
}
}
var settings;
let nWorkspacesSignal;
let workspaceRemovedSignal;