73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
// KWin JavaScript Script: Focus, Restore, or Cycle Application Windows
|
|
var name = "%APP_NAME%".toLowerCase().trim();
|
|
var ix = %ICON_X%;
|
|
var iy = %ICON_Y%;
|
|
|
|
if (name && name !== "") {
|
|
var windows = workspace.windowList();
|
|
var matchingWindows = [];
|
|
|
|
for (var i = 0; i < windows.length; i++) {
|
|
var win = windows[i];
|
|
if (!win.normalWindow && !win.fullScreen && !win.managed) continue;
|
|
|
|
var cls = (win.desktopFileName || win.resourceClass || win.resourceName || "").toLowerCase().trim();
|
|
var caption = (win.caption || "").toLowerCase().trim();
|
|
if (!cls && !caption) continue;
|
|
|
|
var matches = false;
|
|
|
|
if (cls === name) {
|
|
matches = true;
|
|
} else if (name.indexOf("overwatch") !== -1 || name.indexOf("2357570") !== -1) {
|
|
if (cls.indexOf("overwatch") !== -1 || caption.indexOf("overwatch") !== -1 || cls === "steam_app_2357570") {
|
|
matches = true;
|
|
}
|
|
} else if (name.indexOf("steam_app_") !== -1) {
|
|
if (cls === name || cls.indexOf(name) !== -1) {
|
|
matches = true;
|
|
}
|
|
} else if (name !== "steam") {
|
|
if (cls && cls !== "steam" && (cls.indexOf(name) !== -1 || name.indexOf(cls) !== -1)) {
|
|
matches = true;
|
|
} else if (caption && caption.indexOf(name) !== -1) {
|
|
matches = true;
|
|
}
|
|
}
|
|
|
|
if (matches) {
|
|
matchingWindows.push(win);
|
|
}
|
|
}
|
|
|
|
if (matchingWindows.length === 1) {
|
|
var targetWin = matchingWindows[0];
|
|
try { targetWin.setMinimizeIconGeometry(Qt.rect(ix, iy, 42, 42)); } catch(e) {}
|
|
|
|
if (workspace.activeWindow === targetWin && !targetWin.minimized) {
|
|
targetWin.minimized = true;
|
|
} else {
|
|
targetWin.minimized = false;
|
|
workspace.activeWindow = targetWin;
|
|
}
|
|
} else if (matchingWindows.length > 1) {
|
|
var activeIdx = -1;
|
|
for (var j = 0; j < matchingWindows.length; j++) {
|
|
if (workspace.activeWindow === matchingWindows[j] && !matchingWindows[j].minimized) {
|
|
activeIdx = j;
|
|
break;
|
|
}
|
|
}
|
|
|
|
var nextIdx = 0;
|
|
if (activeIdx !== -1) {
|
|
nextIdx = (activeIdx + 1) % matchingWindows.length;
|
|
}
|
|
|
|
var winToActivate = matchingWindows[nextIdx];
|
|
try { winToActivate.setMinimizeIconGeometry(Qt.rect(ix, iy, 42, 42)); } catch(e) {}
|
|
winToActivate.minimized = false;
|
|
workspace.activeWindow = winToActivate;
|
|
}
|
|
}
|