From 247ffa0358b5bdf38009bcd1cd0f1b02dacff4fa Mon Sep 17 00:00:00 2001 From: gerritdevriese <1899386+gerritdevriese@users.noreply.github.com> Date: Tue, 27 Sep 2022 19:02:43 +0200 Subject: [PATCH 01/10] add active screen property --- KZones.kwinscript | Bin 11667 -> 11676 bytes contents/ui/main.qml | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/KZones.kwinscript b/KZones.kwinscript index 0a4e4c923e6de8e00a549a050ed6f435d2cb6b64..4ed94a8a0eb41ef6fa5acef8d3093afa73873d59 100644 GIT binary patch delta 6272 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 Date: Tue, 27 Sep 2022 19:07:28 +0200 Subject: [PATCH 02/10] alternate indicator style --- KZones.kwinscript | Bin 11676 -> 11923 bytes contents/config/main.xml | 3 ++ contents/ui/config.ui | 91 ++++++++++++++++++++++++++++----------- contents/ui/main.qml | 9 ++-- 4 files changed, 74 insertions(+), 29 deletions(-) diff --git a/KZones.kwinscript b/KZones.kwinscript index 4ed94a8a0eb41ef6fa5acef8d3093afa73873d59..c0d1cf16d3dbf7086606c4e38a16f2b2003e7edb 100644 GIT binary patch delta 10314 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 K^ceq>{{IKjou%==x5N=^>DnM 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 + + false + diff --git a/contents/ui/config.ui b/contents/ui/config.ui index 1a9caed..52120d4 100644 --- a/contents/ui/config.ui +++ b/contents/ui/config.ui @@ -562,6 +562,25 @@ + + + + + 12 + + + + Style + + + + + + + Alternate indicator style + + + @@ -718,32 +737,52 @@ - - - - 50 - false - false - false - false - - - - - - - Please reload the script after making changes to apply them - - - false - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 8 - - + + + + + https://github.com/gerritdevriese/kzones + + + <a href="https://github.com/gerritdevriese/kzones">Github page</a> + + + 8 + + + true + + + + + + + + 50 + false + false + false + false + + + + + + + Please reload the script after making changes to apply them + + + false + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + + diff --git a/contents/ui/main.qml b/contents/ui/main.qml index a530847..859099f 100644 --- a/contents/ui/main.qml +++ b/contents/ui/main.qml @@ -61,7 +61,8 @@ PlasmaCore.Dialog { filterList: KWin.readConfig("filterList", ""), // filter list fadeDuration: KWin.readConfig("fadeDuration", 150), // animation duration in milliseconds osdTimeout: KWin.readConfig("osdTimeout", 2000), // timeout in milliseconds for hiding the OSD after switching layouts - layouts: JSON.parse(KWin.readConfig("layoutsJson", '[{"name": "Layout 1","padding": 0,"zones": [{"name": "1","x": 0,"y": 0,"height": 100,"width": 25},{"name": "2","x": 25,"y": 0,"height": 100,"width": 50},{"name": "3","x": 75,"y": 0,"height": 100,"width": 25}]}]')) // layouts + layouts: JSON.parse(KWin.readConfig("layoutsJson", '[{"name": "Layout 1","padding": 0,"zones": [{"name": "1","x": 0,"y": 0,"height": 100,"width": 25},{"name": "2","x": 25,"y": 0,"height": 100,"width": 50},{"name": "3","x": 75,"y": 0,"height": 100,"width": 25}]}]')), // layouts + alternateIndicatorStyle: KWin.readConfig("alternateIndicatorStyle", false), // alternate indicator style } console.log("KZones: Config loaded: " + JSON.stringify(config)) @@ -509,7 +510,8 @@ PlasmaCore.Dialog { id: indicator width: 160 //180 // TODO: make configurable (indicatorWidth) height: 90 //100 // TODO: make configurable (indicatorHeight) - color: 'transparent' + radius: 5 + color: config.alternateIndicatorStyle ? color_indicator : 'transparent' anchors { horizontalCenter: parent.horizontalCenter horizontalCenterOffset: (((modelData || {}).indicator || {}).offset || {}).x || 0 @@ -539,8 +541,9 @@ PlasmaCore.Dialog { model: config.layouts[currentLayout].zones Rectangle { - property int padding: 3 + property int padding: config.alternateIndicatorStyle ? 0 : 3 radius: 5 + visible: config.alternateIndicatorStyle ? ((index == zone.zoneIndex) ? true : false) : true x: ((modelData.x / 100) * (indicator.width - padding)) + padding y: ((modelData.y / 100) * (indicator.height - padding)) + padding z: (index == zone.zoneIndex) ? 2 : 1 From 5e2ab5a4249e9399eaf0be238d7cc97147bf6135 Mon Sep 17 00:00:00 2001 From: gerritdevriese <1899386+gerritdevriese@users.noreply.github.com> Date: Wed, 28 Sep 2022 22:26:53 +0200 Subject: [PATCH 03/10] switch window in current zone --- KZones.kwinscript | Bin 11923 -> 12338 bytes README.md | 16 +++--- contents/ui/main.qml | 124 +++++++++++++++++++++++++++++-------------- 3 files changed, 92 insertions(+), 48 deletions(-) diff --git a/KZones.kwinscript b/KZones.kwinscript index c0d1cf16d3dbf7086606c4e38a16f2b2003e7edb..91c000dfa47bc80f6314369f6c060ef7b871f4de 100644 GIT binary patch delta 6794 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 diff --git a/README.md b/README.md index 777dba6..e75b053 100644 --- a/README.md +++ b/README.md @@ -200,13 +200,15 @@ The polling rate is the amount of time between each zone check when dragging a w ## Shortcuts List of all available shortcuts: -| Shortcut | Default Binding | -|--------------------------------------|---------------------------| -| Move active window to zone | `Ctrl+Alt+[0-9]` | -| Move active window to previous zone | `Ctrl+Alt+Left` | -| Move active window to next zone | `Ctrl+Alt+Right` | -| Cycle between layouts | `Ctrl+Alt+D` | -| Toggle OSD | `Ctrl+Alt+C` | +| Shortcut | Default Binding | +|-----------------------------------------------|---------------------------| +| Move active window to zone | `Ctrl+Alt+[0-9]` | +| Move active window to previous zone | `Ctrl+Alt+Left` | +| Move active window to next zone | `Ctrl+Alt+Right` | +| Switch to previous window in current zone | `Ctrl+Alt+Down` | +| Switch to next window in current zone | `Ctrl+Alt+Up` | +| Cycle between layouts | `Ctrl+Alt+D` | +| Toggle OSD | `Ctrl+Alt+C` | *To change the default bindings, go to System Settings / Shortcuts and search for KZones* diff --git a/contents/ui/main.qml b/contents/ui/main.qml index 859099f..3589987 100644 --- a/contents/ui/main.qml +++ b/contents/ui/main.qml @@ -17,9 +17,6 @@ PlasmaCore.Dialog { opacity: 0 // hide dialog on startup outputOnly: true // makes dialog click-through - // temp - property bool inverted: false - // properties property var config: {} property bool shown: false @@ -29,7 +26,6 @@ PlasmaCore.Dialog { property int currentLayout: 0 property int highlightedZone: -1 property var oldWindowGeometries: [] - property var zonedClients: [] property int activeScreen: 0 // colors @@ -135,27 +131,49 @@ PlasmaCore.Dialog { } - function getZone(client) { - const index = zonedClients.findIndex((object) => { - return object.client.windowId === client.windowId - }) - if (index > -1) { - return zonedClients[index].zone - } else { - return -1 + function matchZone(client) { + client.zone = -1 + // get all zones in the current layout + let zones = config.layouts[currentLayout].zones + // loop through zones and compare with the geometries of the client + for (let i = 0; i < zones.length; i++) { + let zone = zones[i] + let zone_padding = config.layouts[currentLayout].padding || 0 + let zoneX = clientArea.x + ((zone.x / 100) * (clientArea.width - zone_padding)) + zone_padding + let zoneY = clientArea.y + ((zone.y / 100) * (clientArea.height - zone_padding)) + zone_padding + let zoneWidth = ((zone.width / 100) * (clientArea.width - zone_padding)) - zone_padding + let zoneHeight = ((zone.height / 100) * (clientArea.height - zone_padding)) - zone_padding + if (client.geometry.x >= zoneX && client.geometry.y >= zoneY && client.geometry.width <= zoneWidth && client.geometry.height <= zoneHeight) { + // zone found, set it and exit the loop + client.zone = i + break + } } } - function setZone(client, zone) { - const index = zonedClients.findIndex((object) => { - return object.client.windowId === client.windowId - }) - if (index > -1) { - console.log("KZones: Updating zone for client " + client.windowId + " to " + zone) - zonedClients[index].zone = zone - } else { - console.log("KZones: Adding client " + client.windowId + " to zone " + zone) - zonedClients.push({client: {windowId: client.windowId}, zone: zone}) + function getWindowsInZone(zone) { + let windows = [] + for (let i = 0; i < workspace.clientList().length; i++) { + let client = workspace.clientList()[i] + if (client.zone === zone && client.normalWindow) windows.push(client) + } + return windows + } + + function switchWindowInZone(zone, reverse) { + + let clientsInZone = getWindowsInZone(zone) + + if (reverse) { clientsInZone.reverse() } + + // cycle through clients in zone + if (clientsInZone.length > 0) { + let index = clientsInZone.indexOf(workspace.activeClient) + if (index === -1) { + workspace.activeClient = clientsInZone[0] + } else { + workspace.activeClient = clientsInZone[(index + 1) % clientsInZone.length] + } } } @@ -175,8 +193,8 @@ PlasmaCore.Dialog { function moveClientToZone(client, zone) { - // block plasmashell from being moved - if (client.resourceClass.toString() === "plasmashell") return + // block abnormal windows from being moved (like plasmashell, docks, etc...) + if (!client.normalWindow) return console.log("KZones: Moving client " + client.resourceClass.toString() + " to zone " + zone) @@ -218,7 +236,7 @@ PlasmaCore.Dialog { } // save zone - setZone(client, zone) + client.zone = zone } // fade in animation @@ -276,32 +294,44 @@ PlasmaCore.Dialog { // shortcut: move to next zone bindShortcut("Move active window to next zone", "Ctrl+Alt+Right", function() { - moveClientToZone(workspace.activeClient, (getZone(workspace.activeClient) + 1) % config.layouts[currentLayout].zones.length) + moveClientToZone(workspace.activeClient, (workspace.activeClient.zone + 1) % config.layouts[currentLayout].zones.length) }) // shortcut: move to previous zone bindShortcut("Move active window to previous zone", "Ctrl+Alt+Left", function() { - moveClientToZone(workspace.activeClient, (getZone(workspace.activeClient) - 1 + config.layouts[currentLayout].zones.length) % config.layouts[currentLayout].zones.length) + moveClientToZone(workspace.activeClient, (workspace.activeClient.zone - 1 + config.layouts[currentLayout].zones.length) % config.layouts[currentLayout].zones.length) }) // shortcut: toggle osd bindShortcut("Toggle OSD", "Ctrl+Alt+C", function() { - if (!inverted) { - if (!shown) { - highlightedZone = -1 - mainDialog.outputOnly = false - show() - } else { - moving = false - hide() - } + if (!shown) { + highlightedZone = -1 + mainDialog.outputOnly = false + show() } else { - // inverted mode + moving = false + hide() } - + }) + + // shortcut: switch to next window in current zone + bindShortcut("Switch to next window in current zone", "Ctrl+Alt+Up", function() { + let zone = workspace.activeClient.zone + switchWindowInZone(zone) + }) + + // shortcut: switch to previous window in current zone + bindShortcut("Switch to previous window in current zone", "Ctrl+Alt+Down", function() { + let zone = workspace.activeClient.zone + switchWindowInZone(zone, true) }) mainDialog.loadConfig() + + // match all clients to zones + for (var i = 0; i < workspace.clientList().length; i++) { + matchZone(workspace.clientList()[i]) + } } function bindShortcut(title, sequence, callback) { @@ -438,7 +468,7 @@ PlasmaCore.Dialog { t += `Active: ${workspace.activeClient.caption}\n` t += `Window class: ${workspace.activeClient.resourceClass.toString()}\n` t += `X: ${workspace.activeClient.geometry.x}, Y: ${workspace.activeClient.geometry.y}, Width: ${workspace.activeClient.geometry.width}, Height: ${workspace.activeClient.geometry.height}\n` - t += `Previous Zone: ${getZone(workspace.activeClient)}\n` + t += `Previous Zone: ${workspace.activeClient.zone}\n` t += `Highlighted Zone: ${highlightedZone}\n` t += `Layout: ${currentLayout}\n` t += `Zones: ${config.layouts[currentLayout].zones.map(z => z.name).join(', ')}\n` @@ -449,7 +479,6 @@ PlasmaCore.Dialog { t += `Moving: ${moving}\n` t += `Resizing: ${resizing}\n` t += `Old Window Geometries: ${oldWindowGeometries.length}\n` - t += `Zoned Clients: ${zonedClients.length}` t += `Active Screen: ${activeScreen}` return t } else { @@ -595,9 +624,22 @@ PlasmaCore.Dialog { Connections { target: workspace + function onClientAdded(client) { + // check if new window spawns in a zone + if (client.zone == undefined || client.zone == -1) { + matchZone(client) + } + } + function onClientActivated(client) { - if (client) console.log("KZones: Client activated: " + client.resourceClass.toString()) + if (client) { + console.log("KZones: Client activated: " + client.resourceClass.toString() + " (zone " + client.zone + ")"); + } } + + // unused, but may be useful in the future + // function onClientFullScreenSet(client, fullscreen, user) { } + // function onVirtualScreenSizeChanged(){ } } // options connection From 1a6252c2a1684dabdb30dc297cdd9927b1d7f4b4 Mon Sep 17 00:00:00 2001 From: gerritdevriese <1899386+gerritdevriese@users.noreply.github.com> Date: Thu, 29 Sep 2022 10:00:46 +0200 Subject: [PATCH 04/10] match zone fix --- KZones.kwinscript | Bin 12338 -> 12359 bytes contents/ui/main.qml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/KZones.kwinscript b/KZones.kwinscript index 91c000dfa47bc80f6314369f6c060ef7b871f4de..f5f3957d17ca9519ea5c673b3fb0b9a8d3f0b5a2 100644 GIT binary patch delta 6953 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 delta 6938 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 && client.geometry.y >= zoneY && client.geometry.width <= zoneWidth && client.geometry.height <= zoneHeight) { + if (client.geometry.x == zoneX && client.geometry.y == zoneY && client.geometry.width == zoneWidth && client.geometry.height == zoneHeight) { // zone found, set it and exit the loop client.zone = i break From f80cc64c7d1e350078b2bf8d1faa99175714a403 Mon Sep 17 00:00:00 2001 From: gerritdevriese <1899386+gerritdevriese@users.noreply.github.com> Date: Thu, 29 Sep 2022 12:47:36 +0200 Subject: [PATCH 05/10] remember window geometries fix --- KZones.kwinscript | Bin 12359 -> 12416 bytes contents/ui/main.qml | 56 ++++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/KZones.kwinscript b/KZones.kwinscript index f5f3957d17ca9519ea5c673b3fb0b9a8d3f0b5a2..31032ed3f570de5879b03cb999bdf225da4e7c8b 100644 GIT binary patch delta 6788 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