mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-29 07:52:50 -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);
|
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) {
|
function getScreenDisplayName(screen) {
|
||||||
if (!screen)
|
if (!screen)
|
||||||
return "";
|
return "";
|
||||||
if (displayNameMode === "model" && screen.model) {
|
if (displayNameMode === "model" && screen.model) {
|
||||||
|
const modelIndex = getScreenModelIndex(screen);
|
||||||
|
if (modelIndex >= 0) {
|
||||||
|
return screen.model + "-" + modelIndex;
|
||||||
|
}
|
||||||
return screen.model;
|
return screen.model;
|
||||||
}
|
}
|
||||||
return screen.name;
|
return screen.name;
|
||||||
@@ -940,13 +976,27 @@ rm -rf '${home}'/.cache/icon-cache '${home}'/.cache/thumbnails 2>/dev/null || tr
|
|||||||
if (!screen)
|
if (!screen)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
const screenDisplayName = getScreenDisplayName(screen);
|
||||||
|
|
||||||
return prefs.some(pref => {
|
return prefs.some(pref => {
|
||||||
if (typeof pref === "string") {
|
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") {
|
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;
|
return pref.name === screen.name;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
|
import Quickshell
|
||||||
import qs.Common
|
import qs.Common
|
||||||
import qs.Services
|
import qs.Services
|
||||||
import qs.Widgets
|
import qs.Widgets
|
||||||
@@ -16,10 +17,16 @@ Rectangle {
|
|||||||
property string currentDeviceName: ""
|
property string currentDeviceName: ""
|
||||||
|
|
||||||
function getScreenPinKey() {
|
function getScreenPinKey() {
|
||||||
|
if (!screenName)
|
||||||
|
return "";
|
||||||
|
const screen = Quickshell.screens.find(s => s.name === screenName);
|
||||||
|
if (screen) {
|
||||||
|
return SettingsData.getScreenDisplayName(screen);
|
||||||
|
}
|
||||||
if (SettingsData.displayNameMode === "model" && screenModel && screenModel.length > 0) {
|
if (SettingsData.displayNameMode === "model" && screenModel && screenModel.length > 0) {
|
||||||
return screenModel;
|
return screenModel;
|
||||||
}
|
}
|
||||||
return screenName || "";
|
return screenName;
|
||||||
}
|
}
|
||||||
|
|
||||||
function resolveDeviceName() {
|
function resolveDeviceName() {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
|
import Quickshell
|
||||||
import qs.Common
|
import qs.Common
|
||||||
import qs.Modules.Plugins
|
import qs.Modules.Plugins
|
||||||
import qs.Services
|
import qs.Services
|
||||||
@@ -79,10 +80,16 @@ BasePill {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getScreenPinKey() {
|
function getScreenPinKey() {
|
||||||
|
if (!root.screenName)
|
||||||
|
return "";
|
||||||
|
const screen = Quickshell.screens.find(s => s.name === root.screenName);
|
||||||
|
if (screen) {
|
||||||
|
return SettingsData.getScreenDisplayName(screen);
|
||||||
|
}
|
||||||
if (SettingsData.displayNameMode === "model" && root.screenModel && root.screenModel.length > 0) {
|
if (SettingsData.displayNameMode === "model" && root.screenModel && root.screenModel.length > 0) {
|
||||||
return root.screenModel;
|
return root.screenModel;
|
||||||
}
|
}
|
||||||
return root.screenName || "";
|
return root.screenName;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPinnedBrightnessDevice() {
|
function getPinnedBrightnessDevice() {
|
||||||
|
|||||||
@@ -1486,17 +1486,26 @@ Item {
|
|||||||
currentPrefs = [];
|
currentPrefs = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const screenModelIndex = SettingsData.getScreenModelIndex(screenData);
|
||||||
|
|
||||||
let newPrefs = currentPrefs.filter(pref => {
|
let newPrefs = currentPrefs.filter(pref => {
|
||||||
if (typeof pref === "string")
|
if (typeof pref === "string")
|
||||||
return false;
|
return false;
|
||||||
|
if (pref.modelIndex !== undefined && screenModelIndex >= 0) {
|
||||||
|
return !(pref.model === screenData.model && pref.modelIndex === screenModelIndex);
|
||||||
|
}
|
||||||
return pref.name !== screenData.name || pref.model !== screenData.model;
|
return pref.name !== screenData.name || pref.model !== screenData.model;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (checked) {
|
if (checked) {
|
||||||
newPrefs.push({
|
const prefObj = {
|
||||||
name: screenData.name,
|
name: screenData.name,
|
||||||
model: screenData.model || ""
|
model: screenData.model || ""
|
||||||
});
|
};
|
||||||
|
if (screenModelIndex >= 0) {
|
||||||
|
prefObj.modelIndex = screenModelIndex;
|
||||||
|
}
|
||||||
|
newPrefs.push(prefObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
dankBarTab.setBarScreenPreferences(selectedBarId, newPrefs);
|
dankBarTab.setBarScreenPreferences(selectedBarId, newPrefs);
|
||||||
|
|||||||
@@ -691,9 +691,9 @@ Item {
|
|||||||
StyledText {
|
StyledText {
|
||||||
text: {
|
text: {
|
||||||
if (parent.currentMode) {
|
if (parent.currentMode) {
|
||||||
return parent.currentMode.width + "×" + parent.currentMode.height + "@" + Math.round(parent.currentMode.refresh / 1000) + "Hz"
|
return parent.currentMode.width + "×" + parent.currentMode.height + "@" + Math.round(parent.currentMode.refresh / 1000) + "Hz";
|
||||||
}
|
}
|
||||||
return modelData.width + "×" + modelData.height
|
return modelData.width + "×" + modelData.height;
|
||||||
}
|
}
|
||||||
font.pixelSize: Theme.fontSizeSmall
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
color: Theme.surfaceVariantText
|
color: Theme.surfaceVariantText
|
||||||
@@ -870,17 +870,26 @@ Item {
|
|||||||
currentPrefs = [];
|
currentPrefs = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const screenModelIndex = SettingsData.getScreenModelIndex(screenData);
|
||||||
|
|
||||||
var newPrefs = currentPrefs.filter(pref => {
|
var newPrefs = currentPrefs.filter(pref => {
|
||||||
if (typeof pref === "string")
|
if (typeof pref === "string")
|
||||||
return false;
|
return false;
|
||||||
|
if (pref.modelIndex !== undefined && screenModelIndex >= 0) {
|
||||||
|
return !(pref.model === screenData.model && pref.modelIndex === screenModelIndex);
|
||||||
|
}
|
||||||
return pref.name !== screenData.name || pref.model !== screenData.model;
|
return pref.name !== screenData.name || pref.model !== screenData.model;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (checked) {
|
if (checked) {
|
||||||
newPrefs.push({
|
const prefObj = {
|
||||||
name: screenData.name,
|
name: screenData.name,
|
||||||
model: screenData.model || ""
|
model: screenData.model || ""
|
||||||
});
|
};
|
||||||
|
if (screenModelIndex >= 0) {
|
||||||
|
prefObj.modelIndex = screenModelIndex;
|
||||||
|
}
|
||||||
|
newPrefs.push(prefObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
displaysTab.setScreenPreferences(componentId, newPrefs);
|
displaysTab.setScreenPreferences(componentId, newPrefs);
|
||||||
|
|||||||
Reference in New Issue
Block a user