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:
@@ -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;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user