From a0d9c49287ca09e651611db05c080da62d2c1c54 Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Sat, 8 Mar 2025 16:49:24 +0100 Subject: [PATCH] remove all uses of window shading --- README.md | 2 +- package/contents/ui/config.ui | 2 +- src/lib/extern/kwin.ts | 2 -- src/lib/keyBindings/definition.ts | 2 +- src/lib/layout/Column.ts | 12 +----------- src/lib/layout/Window.ts | 4 ---- src/lib/world/ClientWrapper.ts | 10 ---------- src/lib/world/clientState/Tiled.ts | 1 - src/tests/utils/mocks/MockKwinClient.ts | 2 -- 9 files changed, 4 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 36e01ea..60414f3 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Here's the default ones: | (unassigned) | Move window to the previous position in grid | | Meta+Shift+Home | Move window to start | | Meta+Shift+End | Move window to end | -| Meta+X | Toggle stacked layout for focused column (One window in the column visible, others shaded; not supported on Wayland) | +| Meta+X | Toggle stacked layout for focused column (Only the active window visible) | | Meta+Ctrl+Shift+A | Move column left | | Meta+Ctrl+Shift+D | Move column right | | Meta+Ctrl+Shift+Home | Move column to start | diff --git a/package/contents/ui/config.ui b/package/contents/ui/config.ui index 834fdf4..82f4d18 100644 --- a/package/contents/ui/config.ui +++ b/package/contents/ui/config.ui @@ -35,7 +35,7 @@ Stack columns by default - New columns start in stacked mode (one window in the column visible, others shaded). Not supported on Wayland. + New columns start in stacked mode (only the active window visible) diff --git a/src/lib/extern/kwin.ts b/src/lib/extern/kwin.ts index fd4eb0e..af79f43 100644 --- a/src/lib/extern/kwin.ts +++ b/src/lib/extern/kwin.ts @@ -54,7 +54,6 @@ type Output = { __brand: "Output" }; type KwinClient = { __brand: "KwinClient"; - readonly shadeable: boolean; readonly caption: string; readonly minSize: Readonly; readonly transient: boolean; @@ -79,7 +78,6 @@ type KwinClient = { skipSwitcher: boolean; keepAbove: boolean; keepBelow: boolean; - shade: boolean; minimized: boolean; frameGeometry: QmlRect; desktops: KwinDesktop[]; // empty array means all desktops diff --git a/src/lib/keyBindings/definition.ts b/src/lib/keyBindings/definition.ts index 3fde927..7a9e12b 100644 --- a/src/lib/keyBindings/definition.ts +++ b/src/lib/keyBindings/definition.ts @@ -106,7 +106,7 @@ function getKeyBindings(world: World, actions: Actions): KeyBinding[] { { name: "column-toggle-stacked", description: "Toggle stacked layout for focused column", - comment: "One window in the column visible, others shaded; not supported on Wayland", + comment: "Only the active window visible", defaultKeySequence: "Meta+X", action: () => world.doIfTiledFocused(actions.columnToggleStacked), }, diff --git a/src/lib/layout/Column.ts b/src/lib/layout/Column.ts index 6ddae40..000d1de 100644 --- a/src/lib/layout/Column.ts +++ b/src/lib/layout/Column.ts @@ -221,13 +221,12 @@ class Column { } } - if (this.stacked && this.windows.length() >= 2 && this.canStack()) { + if (this.stacked && this.windows.length() >= 2) { this.arrangeStacked(x); return; } let y = this.grid.desktop.tilingArea.y; for (const window of this.windows.iterator()) { - window.client.setShade(false); window.arrange(x, y, this.width, window.height); y += window.height + this.grid.config.gapsInnerVertical; } @@ -255,15 +254,6 @@ class Column { this.grid.desktop.onLayoutChanged(); } - private canStack() { - for (const window of this.windows.iterator()) { - if (!window.client.kwinClient.shadeable) { - return false; - } - } - return true; - } - public onWindowAdded(window: Window, bottom: boolean) { if (bottom) { this.windows.insertEnd(window); diff --git a/src/lib/layout/Window.ts b/src/lib/layout/Window.ts index 084101c..a1da390 100644 --- a/src/lib/layout/Window.ts +++ b/src/lib/layout/Window.ts @@ -60,10 +60,6 @@ class Window { } public focus() { - if (this.client.isShaded()) { - // workaround for KWin deactivating clients when unshading immediately after activation - this.client.setShade(false); - } this.client.focus(); } diff --git a/src/lib/world/ClientWrapper.ts b/src/lib/world/ClientWrapper.ts index 0f99b78..25d93eb 100644 --- a/src/lib/world/ClientWrapper.ts +++ b/src/lib/world/ClientWrapper.ts @@ -108,16 +108,6 @@ class ClientWrapper { }); } - public setShade(shade: boolean) { - this.manipulatingGeometry.do(() => { - this.kwinClient.shade = shade; - }); - } - - public isShaded() { - return this.kwinClient.shade; - } - public getMaximizedMode() { return this.maximizedMode; } diff --git a/src/lib/world/clientState/Tiled.ts b/src/lib/world/clientState/Tiled.ts index 98ef6e9..94c4ac8 100644 --- a/src/lib/world/clientState/Tiled.ts +++ b/src/lib/world/clientState/Tiled.ts @@ -236,7 +236,6 @@ namespace ClientState { if (config.offScreenOpacity < 1.0) { client.kwinClient.opacity = 1.0; } - client.setShade(false); client.setFullScreen(false); if (client.kwinClient.tile === null) { client.setMaximize(false, false); diff --git a/src/tests/utils/mocks/MockKwinClient.ts b/src/tests/utils/mocks/MockKwinClient.ts index 46d02a7..61e6015 100644 --- a/src/tests/utils/mocks/MockKwinClient.ts +++ b/src/tests/utils/mocks/MockKwinClient.ts @@ -3,7 +3,6 @@ class MockKwinClient { private static readonly borderThickness = 10; - public readonly shadeable: boolean = false; public caption = "App"; public minSize: Readonly = new MockQmlSize(0, 0); public readonly transient: boolean; @@ -26,7 +25,6 @@ class MockKwinClient { public skipSwitcher: boolean = false; public keepAbove: boolean = false; public keepBelow: boolean = false; - public shade: boolean = false; private _minimized: boolean = false; private _desktops: KwinDesktop[] = []; private _tile: Tile|null = null;