1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-05 21:15:38 -05:00

displays: workaround for duplicate models

This commit is contained in:
bbedward
2025-11-27 10:34:18 -05:00
parent 384c775f1a
commit 28ad641070
5 changed files with 92 additions and 10 deletions

View File

@@ -927,10 +927,46 @@ rm -rf '${home}'/.cache/icon-cache '${home}'/.cache/thumbnails 2>/dev/null || tr
return barConfigs.filter(cfg => cfg.enabled);
}
function getScreensSortedByPosition() {
const screens = [];
for (let i = 0; i < Quickshell.screens.length; i++) {
screens.push(Quickshell.screens[i]);
}
screens.sort((a, b) => {
if (a.x !== b.x)
return a.x - b.x;
return a.y - b.y;
});
return screens;
}
function getScreenModelIndex(screen) {
if (!screen || !screen.model)
return -1;
const sorted = getScreensSortedByPosition();
let modelCount = 0;
let screenIndex = -1;
for (let i = 0; i < sorted.length; i++) {
if (sorted[i].model === screen.model) {
if (sorted[i].name === screen.name) {
screenIndex = modelCount;
}
modelCount++;
}
}
if (modelCount <= 1)
return -1;
return screenIndex;
}
function getScreenDisplayName(screen) {
if (!screen)
return "";
if (displayNameMode === "model" && screen.model) {
const modelIndex = getScreenModelIndex(screen);
if (modelIndex >= 0) {
return screen.model + "-" + modelIndex;
}
return screen.model;
}
return screen.name;
@@ -940,13 +976,27 @@ rm -rf '${home}'/.cache/icon-cache '${home}'/.cache/thumbnails 2>/dev/null || tr
if (!screen)
return false;
const screenDisplayName = getScreenDisplayName(screen);
return prefs.some(pref => {
if (typeof pref === "string") {
return pref === "all" || pref === screen.name || pref === screen.model;
if (pref === "all" || pref === screen.name)
return true;
if (displayNameMode === "model") {
return pref === screenDisplayName;
}
return pref === screen.model;
}
if (displayNameMode === "model") {
return pref.model && screen.model && pref.model === screen.model;
if (pref.model && screen.model) {
if (pref.modelIndex !== undefined) {
const screenModelIndex = getScreenModelIndex(screen);
return pref.model === screen.model && pref.modelIndex === screenModelIndex;
}
return pref.model === screen.model;
}
return false;
}
return pref.name === screen.name;
});