Files
dms-gamebar/GameBarSettings.qml
T

211 lines
5.7 KiB
QML

import QtQuick
import qs.Common
import qs.Modules.Plugins
import qs.Widgets
import "./settings"
PluginSettings {
id: settings
pluginId: "gameBar"
Rectangle {
width: parent.width
height: hintColumn.implicitHeight + Theme.spacingM * 2
radius: Theme.cornerRadius
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
border.color: Theme.outlineMedium
border.width: Theme.layerOutlineWidth
Column {
id: hintColumn
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Theme.spacingM
spacing: Theme.spacingXS
StyledText {
text: "Keybind setup"
font.pixelSize: Theme.fontSizeMedium
font.weight: Font.Medium
color: Theme.surfaceText
}
StyledText {
width: parent.width
text: "Commands: dms ipc call gameBar toggle / open / close / widget <name> / resetLayout"
font.pixelSize: Theme.fontSizeSmall
font.family: Theme.monoFontFamily
color: Theme.surfaceVariantText
wrapMode: Text.WordWrap
}
}
}
SliderSetting {
settingKey: "backdropOpacity"
label: "Background dimming"
description: "How much the desktop behind the overlay is darkened"
defaultValue: 70
minimum: 0
maximum: 95
unit: "%"
leftIcon: "light_mode"
rightIcon: "dark_mode"
}
ToggleSetting {
settingKey: "autoPinBrightness"
label: "Match brightness devices to monitors"
description: "Detects which DDC device belongs to which display and pins it, so the shell's own brightness slider follows the panel's monitor"
defaultValue: true
}
SelectionSetting {
settingKey: "barBrightnessTarget"
label: "Bar brightness widget controls"
description: "Which display the DankBar brightness pill adjusts"
options: [
{
"label": "Focused monitor",
"value": "focused"
},
{
"label": "Its own monitor",
"value": "own"
}
]
defaultValue: "focused"
}
StringSetting {
settingKey: "captureDirectory"
label: "Capture folder"
description: "Where recordings and replays are written"
defaultValue: "~/Videos/GameBar"
placeholder: "~/Videos/GameBar"
}
SliderSetting {
settingKey: "captureFps"
label: "Recording frame rate"
defaultValue: 60
minimum: 24
maximum: 144
unit: " fps"
leftIcon: "slow_motion_video"
rightIcon: "speed"
}
SliderSetting {
settingKey: "captureReplaySeconds"
label: "Replay buffer length"
description: "How much of the past the replay buffer keeps"
defaultValue: 30
minimum: 5
maximum: 300
unit: "s"
leftIcon: "timer"
rightIcon: "history"
}
SelectionSetting {
settingKey: "captureQuality"
label: "Recording quality"
options: [
{
"label": "Medium",
"value": "medium"
},
{
"label": "High",
"value": "high"
},
{
"label": "Very high",
"value": "very_high"
},
{
"label": "Ultra",
"value": "ultra"
}
]
defaultValue: "very_high"
}
StringSetting {
settingKey: "captureAudio"
label: "Recorded audio source"
description: "gpu-screen-recorder device, e.g. default_output"
defaultValue: "default_output"
placeholder: "default_output"
}
StringSetting {
settingKey: "haUrl"
label: "Home Assistant URL"
description: "e.g. http://homeassistant.local:8123"
placeholder: "http://homeassistant.local:8123"
}
StringSetting {
settingKey: "haToken"
label: "Long-lived access token"
description: "Home Assistant profile page, bottom of Security tab"
placeholder: "eyJhbGciOi..."
}
SliderSetting {
settingKey: "haPollInterval"
label: "Home Assistant refresh interval"
description: "How often entity states are polled while the Home widget is open"
defaultValue: 5
minimum: 2
maximum: 30
unit: "s"
leftIcon: "speed"
rightIcon: "schedule"
}
HomeSettings {
width: parent.width
settings: settings
}
Item {
width: parent.width
height: resetColumn.implicitHeight
Column {
id: resetColumn
anchors.left: parent.left
anchors.right: parent.right
spacing: Theme.spacingXS
StyledText {
text: "Widget layout"
font.pixelSize: Theme.fontSizeMedium
font.weight: Font.Medium
color: Theme.surfaceText
}
StyledText {
width: parent.width
text: "Widget positions are saved per monitor. Reset them to the default arrangement."
font.pixelSize: Theme.fontSizeSmall
color: Theme.surfaceVariantText
wrapMode: Text.WordWrap
}
DankButton {
text: "Reset widget positions"
iconName: "restart_alt"
onClicked: settings.saveValue("layout", {})
}
}
}
}