From 6025ed6a5af2f247e5e079ce4f2107c1babda6a7 Mon Sep 17 00:00:00 2001 From: Quinten Date: Sat, 14 Sep 2024 08:51:29 -0700 Subject: [PATCH 1/2] support cycling through windows --- ww | 50 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/ww b/ww index 6314226..7a15c49 100755 --- a/ww +++ b/ww @@ -59,23 +59,39 @@ fi SCRIPT_TEMPLATE=$( cat < 0 - for (var i=0; i 0; + var matchingClients = []; + + for (var i = 0; i < clients.length; i++) { + var client = clients[i]; + var classCompare = (isCompareToClass && client.resourceClass == compareToClass) + var captionCompare = (!isCompareToClass && compareToCaption.exec(client.caption)) + if (classCompare || captionCompare) { + matchingClients.push(client); + } + } + + if (matchingClients.length === 1) { + var client = matchingClients[0]; + if (workspace.activeClient !== client) { + workspace.activeClient = client; + } else if (toggle) { + client.minimized = !client.minimized; + } + } else if (matchingClients.length > 1) { + var currentIndex = -1; + for (var i = 0; i < matchingClients.length; i++) { + if (workspace.activeClient === matchingClients[i]) { + currentIndex = i; + break; + } + } + var nextIndex = (currentIndex + 1) % matchingClients.length; + workspace.activeClient = matchingClients[nextIndex]; + } } kwinactivateclient('CLASS_NAME', 'CAPTION_NAME', TOGGLE); EOF From 455654b1a76546a74c754d8c4c1183f2670d79ea Mon Sep 17 00:00:00 2001 From: Quinten Roets <62651391+quintenroets@users.noreply.github.com> Date: Sat, 12 Oct 2024 17:56:49 -0700 Subject: [PATCH 2/2] improve behavior for first activation for multiple windows --- ww | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ww b/ww index 7a15c49..aad4c9a 100755 --- a/ww +++ b/ww @@ -82,7 +82,11 @@ function kwinactivateclient(clientClass, clientCaption, toggle) { client.minimized = !client.minimized; } } else if (matchingClients.length > 1) { - var currentIndex = -1; + matchingWindows.sort(function (a, b) { + return a.stackingOrder - b.stackingOrder; + }); + + var currentIndex = matchingClients.length - 2; for (var i = 0; i < matchingClients.length; i++) { if (workspace.activeClient === matchingClients[i]) { currentIndex = i;