diff --git a/kludges.js b/kludges.js index b5c0199..e060c63 100644 --- a/kludges.js +++ b/kludges.js @@ -4,15 +4,53 @@ around these problems. */ +var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; + var Meta = imports.gi.Meta; +var Main = imports.ui.main; +var utils = Extension.imports.utils; + +var Convenience = Extension.imports.convenience; +var settings = Convenience.getSettings(); + +function overrideHotCorners() { + for (let corner of Main.layoutManager.hotCorners) { + if (!corner) + return; + + corner._toggleOverview = function() {}; + + corner._pressureBarrier._trigger = function() {}; + } +} + +function disableHotcorners() { + let override = settings.get_boolean("override-hot-corner"); + if (override) { + overrideHotCorners(); + signals.connect(Main.layoutManager, + 'hot-corners-changed', + overrideHotCorners); + } else { + signals.disconnect(Main.layoutManager); + Main.layoutManager._updateHotCorners(); + } +} var orgUpdateState; +var signals; function init() { orgUpdateState = imports.ui.messageTray.MessageTray.prototype._updateState; + signals = new utils.Signals(); } function enable() { + signals.connect(settings, + 'changed::override-hot-corner', + disableHotcorners); + disableHotcorners(); + // Don't hide notifications when there's fullscreen windows in the workspace. // Fullscreen windows aren't special in paperWM and might not even be // visible, so hiding notifications makes no sense. @@ -81,4 +119,7 @@ function enable() { function disable() { imports.ui.messageTray.MessageTray.prototype._updateState = orgUpdateState; + + signals.destroy(); + Main.layoutManager._updateHotCorners(); } diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index cc11b63..9963fb4 100644 Binary files a/schemas/gschemas.compiled and b/schemas/gschemas.compiled differ diff --git a/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml b/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml index f88fc2b..071df20 100644 --- a/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml +++ b/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml @@ -196,6 +196,11 @@ Minimum gap between windows + + true + Disable the upper left hot corner + +