78 lines
1.9 KiB
QML
78 lines
1.9 KiB
QML
pragma Singleton
|
|
|
|
import Quickshell
|
|
import qs.Commons
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
// -------------------------------------------
|
|
// Manual scaling via Settings
|
|
function scale(aScreen) {
|
|
try {
|
|
if (aScreen !== undefined && aScreen.name !== undefined) {
|
|
return getMonitorScale(aScreen.name)
|
|
}
|
|
} catch (e) {
|
|
|
|
//Logger.warn(e)
|
|
}
|
|
return 1.0
|
|
}
|
|
|
|
// -------------------------------------------
|
|
function getMonitorScale(aScreenName) {
|
|
try {
|
|
var monitors = Settings.data.ui.monitorsScaling
|
|
if (monitors !== undefined) {
|
|
for (var i = 0; i < monitors.length; i++) {
|
|
if (monitors[i].name !== undefined && monitors[i].name === aScreenName) {
|
|
return monitors[i].scale
|
|
}
|
|
}
|
|
}
|
|
} catch (e) {
|
|
|
|
//Logger.warn(e)
|
|
}
|
|
return 1.0
|
|
}
|
|
|
|
// -------------------------------------------
|
|
function setMonitorScale(aScreenName, scale) {
|
|
try {
|
|
var monitors = Settings.data.ui.monitorsScaling
|
|
if (monitors !== undefined) {
|
|
for (var i = 0; i < monitors.length; i++) {
|
|
if (monitors[i].name !== undefined && monitors[i].name === aScreenName) {
|
|
monitors[i].scale = scale
|
|
return
|
|
}
|
|
}
|
|
}
|
|
monitors.push({
|
|
"name": aScreenName,
|
|
"scale": scale
|
|
})
|
|
} catch (e) {
|
|
|
|
//Logger.warn(e)
|
|
}
|
|
}
|
|
|
|
// -------------------------------------------
|
|
// Dynamic scaling based on resolution
|
|
|
|
// Design reference resolution (for scale = 1.0)
|
|
readonly property int designScreenWidth: 2560
|
|
readonly property int designScreenHeight: 1440
|
|
|
|
function dynamicScale(aScreen) {
|
|
if (aScreen != null) {
|
|
var ratioW = aScreen.width / designScreenWidth
|
|
var ratioH = aScreen.height / designScreenHeight
|
|
return Math.min(ratioW, ratioH)
|
|
}
|
|
return 1.0
|
|
}
|
|
}
|