scripts/minimizeall: Try to preserve last active window

Windows in workspace.clientList() are sorted in the map order. This
means that the minimize all script will try to activate the last mapped
window when unminimizing windows, which is a bit annoying.

This change ensures that the minimize all script doesn't activate wrong
window by minimizing and unminimizing windows in the stacking order.
It's not a bullet-proof solution though, but it should produce good
enough results.
This commit is contained in:
Vlad Zahorodnii 2021-11-02 22:51:53 +02:00
parent 89067ff9db
commit 22b7ac02b4

View file

@ -30,6 +30,16 @@ function minimizeAllWindows() {
relevantClients.push(allClients[i]);
}
// Try to preserve last active window by sorting windows.
relevantClients.sort((a, b) => {
if (a.active) {
return 1;
} else if (b.active) {
return -1;
}
return a.stackingOrder - b.stackingOrder;
});
for (var i = 0; i < relevantClients.length; ++i) {
var wasMinimizedByScript = relevantClients[i].minimizedByScript;
delete relevantClients[i].minimizedByScript;