From 0be8c22ba10a9aa51e4dcd634473b7d1def14eaa Mon Sep 17 00:00:00 2001 From: Andre Ramnitz Date: Mon, 19 Oct 2026 18:26:40 +0200 Subject: [PATCH 1/1] initial commit: poc --- contents/code/main.js | 77 +++++++++++++++++++++++++++++++++++++++++++ metadata.json | 13 ++++++++ 2 files changed, 90 insertions(+) create mode 100644 contents/code/main.js create mode 100644 metadata.json diff --git a/contents/code/main.js b/contents/code/main.js new file mode 100644 index 0000000..33f3a4d --- /dev/null +++ b/contents/code/main.js @@ -0,0 +1,77 @@ + +"use strict"; + +// SimpleDwindle 0.1 +// Proof of Concept: Tiling / Floating Z-order + +const tiledWindows = []; + +function log(message) { + print("[SimpleDwindle] " + message); +} + +function isCandidate(window) { + return window && window.normalWindow && + !window.fullScreen; +} + +function isTiled(window) { + return tiledWindows.indexOf(window) !== -1; +} + +function setTiled(window) { + if (!isCandidate(window) || isTiled(window)) + return; + + tiledWindows.push(window); + + window.keepAbove = false; + window.keepBelow = true; + + log("TILED: " + window.caption); +} + +function setFloating(window) { + const index = tiledWindows.indexOf(window); + + if (index === -1) + return; + + tiledWindows.splice(index, 1); + + window.keepBelow = false; + + log("FLOATING: " + window.caption); +} + +function toggleFloating() { + const window = workspace.activeWindow; + + if (!window) + return; + + if (isTiled(window)) + setFloating(window); + else + setTiled(window); +} + +// Remove closed windows from our list +workspace.windowRemoved.connect(function(window) { + const index = tiledWindows.indexOf(window); + + if (index !== -1) + tiledWindows.splice(index, 1); +}); + +// Keyboard shortcut +registerShortcut( + "SimpleDwindleToggleFloating", + "SimpleDwindle: Toggle Floating", + "Meta+S", + toggleFloating +); + +log("Version 0.1 initialized"); + + diff --git a/metadata.json b/metadata.json new file mode 100644 index 0000000..8cf7a7d --- /dev/null +++ b/metadata.json @@ -0,0 +1,13 @@ +{ + "KPlugin": { + "Id": "simpledwindle", + "Name": "SimpleDwindle", + "Description": "Minimal tiling and floating window manager", + "Version": "0.1", + "License": "MIT" + }, + "X-Plasma-API": "javascript", + "X-Plasma-MainScript": "code/main.js", + "KPackageStructure": "KWin/Script" +} + -- 2.55.0