82 lines
4.0 KiB
QML
82 lines
4.0 KiB
QML
import QtQuick
|
||
import qs.config
|
||
import qs.services
|
||
import qs.widgets
|
||
|
||
SettingsPage {
|
||
title: "Displays"
|
||
lede: SystemSettings.monitorDescription || "Reading the active display…"
|
||
|
||
SettingsCard {
|
||
title: SystemSettings.monitorName || "Active display"
|
||
subtitle: `${SystemSettings.monitorWidth} × ${SystemSettings.monitorHeight} at ${SystemSettings.monitorRefreshRate.toFixed(0)} Hz · ${SystemSettings.monitorScale.toFixed(1)}× scale · ${SystemSettings.monitorFormat}`
|
||
TextRow { label: "Color mode"; detail: "Wide-gamut SDR desktop at 10-bit"; value: SystemSettings.colorPreset || "wide" }
|
||
TextRow { label: "Variable refresh"; detail: SystemSettings.monitorVrrActive ? "Active for current fullscreen content" : "Ready when game or video content requests it"; value: SystemSettings.monitorVrrActive ? "Active" : "Standby"; divider: false }
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "Gaming display policy"
|
||
subtitle: "These values apply immediately and are restored when Panama starts."
|
||
SettingRow {
|
||
label: "Game-aware HDR"
|
||
detail: "Enter HDR only for fullscreen content that requests it"
|
||
controlWidth: 48
|
||
SettingsToggle { anchors.right: parent.right; anchors.verticalCenter: parent.verticalCenter; checked: SystemSettings.autoHdr; onToggled: value => SystemSettings.setAutoHdr(value) }
|
||
}
|
||
SettingRow {
|
||
label: "Content-aware VRR"
|
||
detail: "Enable variable refresh only for game and video content"
|
||
controlWidth: 48
|
||
SettingsToggle { anchors.right: parent.right; anchors.verticalCenter: parent.verticalCenter; checked: SystemSettings.vrrPolicy === 3; onToggled: value => SystemSettings.setVrrPolicy(value ? 3 : 0) }
|
||
}
|
||
SettingRow {
|
||
label: "Direct scanout for games"
|
||
detail: "Bypass compositing only for windows classified as games"
|
||
divider: false
|
||
controlWidth: 48
|
||
SettingsToggle { anchors.right: parent.right; anchors.verticalCenter: parent.verticalCenter; checked: SystemSettings.directScanoutPolicy === 2; onToggled: value => SystemSettings.setDirectScanoutPolicy(value ? 2 : 0) }
|
||
}
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "Night Light"
|
||
SettingRow {
|
||
label: "Warm display colors"
|
||
detail: NightLight.automatic ? "Following the evening schedule" : "Manual control"
|
||
controlWidth: 48
|
||
SettingsToggle { anchors.right: parent.right; anchors.verticalCenter: parent.verticalCenter; checked: NightLight.active; onToggled: NightLight.toggle() }
|
||
}
|
||
SettingRow {
|
||
label: "Color temperature"
|
||
detail: `${NightLight.temperature} K`
|
||
divider: false
|
||
controlWidth: 230
|
||
ValueSlider {
|
||
anchors.fill: parent
|
||
value: (6500 - NightLight.temperature) / 4000
|
||
icon: "weather-clear-night-symbolic"
|
||
onMoved: value => NightLight.temperature = Math.round((6500 - value * 4000) / 50) * 50
|
||
}
|
||
}
|
||
}
|
||
|
||
Rectangle {
|
||
width: parent.width
|
||
height: warningText.implicitHeight + 30
|
||
radius: Theme.cardRadius
|
||
color: Theme.alpha(Theme.warn, 0.085)
|
||
border.width: 1
|
||
border.color: Theme.alpha(Theme.warn, 0.22)
|
||
Text {
|
||
id: warningText
|
||
anchors.fill: parent
|
||
anchors.margins: 15
|
||
text: "Full-time desktop HDR stays unavailable here because the current compositor path can break screenshots, OBS, Sunshine, and lock-screen capture. Game-aware HDR keeps the desktop dependable without giving up HDR games."
|
||
color: Theme.mix(Theme.fg, Theme.warn, 0.25)
|
||
font.family: Theme.fontFamily
|
||
font.pixelSize: Theme.fontSizeSmall
|
||
wrapMode: Text.WordWrap
|
||
}
|
||
}
|
||
}
|