diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 16:02:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 16:02:55 +0000 |
commit | b78db72d2bae81adaadc572f98f3cd6c59252f3c (patch) | |
tree | 87c0a4bc94b00fc19e0f53a2f9ad247fe6c2e551 /extensions/45/vertical-workspaces/lib/osdWindow.js | |
parent | Adding 45/no-overview version 45 [d1268aa]. (diff) | |
download | gnome-shell-extensions-extra-b78db72d2bae81adaadc572f98f3cd6c59252f3c.tar.xz gnome-shell-extensions-extra-b78db72d2bae81adaadc572f98f3cd6c59252f3c.zip |
Adding 45/vertical-workspaces version 37+20231208 [0c80cb1].
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'extensions/45/vertical-workspaces/lib/osdWindow.js')
-rw-r--r-- | extensions/45/vertical-workspaces/lib/osdWindow.js | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/extensions/45/vertical-workspaces/lib/osdWindow.js b/extensions/45/vertical-workspaces/lib/osdWindow.js new file mode 100644 index 0000000..2298c34 --- /dev/null +++ b/extensions/45/vertical-workspaces/lib/osdWindow.js @@ -0,0 +1,118 @@ +/** + * V-Shell (Vertical Workspaces) + * osdWindow.js + * + * @author GdH <G-dH@github.com> + * @copyright 2022 - 2023 + * @license GPL-3.0 + * + */ + +'use strict'; + +import Clutter from 'gi://Clutter'; + +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; +import * as OsdWindow from 'resource:///org/gnome/shell/ui/osdWindow.js'; + +let Me; +let opt; + +let OsdPositions; + +export const OsdWindowModule = class { + constructor(me) { + Me = me; + opt = Me.opt; + + this._firstActivation = true; + this.moduleEnabled = false; + this._overrides = null; + + OsdPositions = { + 1: { + x_align: Clutter.ActorAlign.START, + y_align: Clutter.ActorAlign.START, + }, + 2: { + x_align: Clutter.ActorAlign.CENTER, + y_align: Clutter.ActorAlign.START, + }, + 3: { + x_align: Clutter.ActorAlign.END, + y_align: Clutter.ActorAlign.START, + }, + 4: { + x_align: Clutter.ActorAlign.CENTER, + y_align: Clutter.ActorAlign.CENTER, + }, + 5: { + x_align: Clutter.ActorAlign.START, + y_align: Clutter.ActorAlign.END, + }, + 6: { + x_align: Clutter.ActorAlign.CENTER, + y_align: Clutter.ActorAlign.END, + }, + 7: { + x_align: Clutter.ActorAlign.END, + y_align: Clutter.ActorAlign.END, + }, + }; + } + + cleanGlobals() { + Me = null; + opt = null; + OsdPositions = null; + } + + update(reset) { + this.moduleEnabled = opt.get('osdWindowModule'); + const conflict = false; + + reset = reset || !this.moduleEnabled || conflict; + + // don't touch the original code if module disabled + if (reset && !this._firstActivation) { + this._disableModule(); + } else if (!reset) { + this._firstActivation = false; + this._activateModule(); + } + if (reset && this._firstActivation) + console.debug(' OsdWindowModule - Keeping untouched'); + } + + _activateModule() { + if (!this._overrides) + this._overrides = new Me.Util.Overrides(); + + this._overrides.addOverride('osdWindow', OsdWindow.OsdWindow.prototype, OsdWindowCommon); + console.debug(' OsdWindowModule - Activated'); + } + + _disableModule() { + if (this._overrides) + this._overrides.removeAll(); + this._overrides = null; + this._updateExistingOsdWindows(6); + + console.debug(' WorkspaceSwitcherPopupModule - Disabled'); + } + + _updateExistingOsdWindows(position) { + position = position ? position : opt.OSD_POSITION; + Main.osdWindowManager._osdWindows.forEach(osd => { + osd.set(OsdPositions[position]); + }); + } +}; + +const OsdWindowCommon = { + after_show() { + if (!opt.OSD_POSITION) + this.opacity = 0; + this.set(OsdPositions[opt.OSD_POSITION]); + }, +}; |