From 33dd6932d3cbe6880414666a3c511e5440dde1e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Fri, 8 Dec 2017 08:20:03 +0100 Subject: [PATCH] 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. --- extension.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/extension.js b/extension.js index 08917b8..01de0d1 100644 --- a/extension.js +++ b/extension.js @@ -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;