SPDX-FileCopyrightText: 2023 Marco Martin <mart@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
function filterDisabled(entries) {
let filteredEntries = [];
let state = 0;
let entriesForCurrentScreen = 0;
let currentScreen = -1;
let currentActivity = "";
let currentEntrtriesNumber = 0;
let currentEntry = 0;
let currentEntries = [];
for (let e of entries) {
switch (state) {
case 0:
currentScreen = e;
state = 1;
break;
case 1:
currentActivity = e;
state = 2;
break;
case 2:
currentEntrtriesNumber = Number(e);
state = 3;
break;
case 3:
if (e.indexOf("desktop:/") !== 0) {
currentEntries.push(e);
currentEntry++;
} else {
let count = (e.match(/\//g) || []).length;
if (count == 1) {
currentEntries.push(e);
currentEntry++;
} else {
currentEntrtriesNumber--;
}
}
if (currentEntry === currentEntrtriesNumber) {
state = 0;
if (currentEntries.length > 0) {
filteredEntries = filteredEntries.concat([currentScreen, currentActivity, currentEntrtriesNumber]);
filteredEntries = filteredEntries.concat(currentEntries);
currentEntries = [];
}
}
break;
}
}
return filteredEntries;
}
function filterEnabled(entries) {
let filteredEntries = [];
let state = 0;
let shouldDrop = false;
for (let e of entries) {
switch (state) {
case 0:
if (e.indexOf("desktop:/") !== 0) {
filteredEntries.push(e);
shouldDrop = false;
} else {
let count = (e.match(/\//g) || []).length;
if (count == 1) {
filteredEntries.push(e);
shouldDrop = false;
} else {
shouldDrop = true;
}
}
break;
case 1:
case 2:
if (!shouldDrop) {
filteredEntries.push(e);
}
}
state = (state + 1) % 3;
}
return filteredEntries;
}
const config = ConfigFile('plasma-org.kde.plasma.desktop-appletsrc');
config.group = 'ScreenMapping';
let entries = config.readEntry("itemsOnDisabledScreens").split(",");
let filteredEntries = filterDisabled(entries);
config.writeEntry("itemsOnDisabledScreens", filteredEntries.join(","));
entries = config.readEntry("screenMapping").split(",");
filteredEntries = filterEnabled(entries);
config.writeEntry("screenMapping", filteredEntries.join(","));