forked from Shinonome/dots-hyprland
205 lines
5.6 KiB
QML
205 lines
5.6 KiB
QML
import qs
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
import qs.modules.common.functions
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell.Io
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import Quickshell.Hyprland
|
|
|
|
WindowDialog {
|
|
id: root
|
|
property var screen: root.QsWindow.window?.screen
|
|
property var brightnessMonitor: Brightness.getMonitorForScreen(screen)
|
|
backgroundHeight: 700
|
|
|
|
WindowDialogTitle {
|
|
text: Translation.tr("Eye protection")
|
|
}
|
|
|
|
WindowDialogSectionHeader {
|
|
text: Translation.tr("Night Light")
|
|
}
|
|
|
|
WindowDialogSeparator {
|
|
Layout.topMargin: -22
|
|
Layout.leftMargin: 0
|
|
Layout.rightMargin: 0
|
|
}
|
|
|
|
Column {
|
|
id: nightLightColumn
|
|
Layout.topMargin: -16
|
|
Layout.fillWidth: true
|
|
|
|
ConfigSwitch {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
}
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable now")
|
|
checked: Hyprsunset.temperatureActive
|
|
onCheckedChanged: {
|
|
Hyprsunset.toggleTemperature(checked)
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
}
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
buttonIcon: "night_sight_auto"
|
|
text: Translation.tr("Automatic")
|
|
checked: Config.options.light.night.automatic
|
|
onCheckedChanged: {
|
|
Config.options.light.night.automatic = checked;
|
|
}
|
|
}
|
|
|
|
WindowDialogSlider {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
leftMargin: 4
|
|
rightMargin: 4
|
|
}
|
|
text: Translation.tr("Intensity")
|
|
from: 6500
|
|
to: 1200
|
|
stopIndicatorValues: [5000, to]
|
|
value: Config.options.light.night.colorTemperature
|
|
onMoved: Config.options.light.night.colorTemperature = value
|
|
tooltipContent: `${Math.round(value)}K`
|
|
}
|
|
}
|
|
|
|
WindowDialogSectionHeader {
|
|
text: Translation.tr("Anti-flashbang (experimental)")
|
|
}
|
|
|
|
WindowDialogSeparator {
|
|
Layout.topMargin: -22
|
|
Layout.leftMargin: 0
|
|
Layout.rightMargin: 0
|
|
}
|
|
|
|
Column {
|
|
id: antiFlashbangColumn
|
|
Layout.topMargin: -16
|
|
Layout.fillWidth: true
|
|
|
|
ConfigSwitch {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
}
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
buttonIcon: "filter"
|
|
text: Translation.tr("Content adjustment")
|
|
checked: HyprlandAntiFlashbangShader.enabled
|
|
onCheckedChanged: {
|
|
if (checked) HyprlandAntiFlashbangShader.enable()
|
|
else HyprlandAntiFlashbangShader.disable()
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("<b>Dims screen content</b> as needed.<br><br>Pros: Immediately responsive<br>Cons: Expensive and can hurt color accuracy<br><br><i>Uses a Hyprland screen shader</i>")
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
}
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
buttonIcon: "light_mode"
|
|
text: Translation.tr("Brightness adjustment")
|
|
checked: Config.options.light.antiFlashbang.enable
|
|
onCheckedChanged: {
|
|
Config.options.light.antiFlashbang.enable = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Adapts the <b>display (physical screen) brightness</b><br><br>Pros: Less expensive, retains colors<br>Cons: Not immediately responsive<br><br><i>Adjusts display brightness after each Hyprland IPC event</i>")
|
|
}
|
|
}
|
|
}
|
|
|
|
WindowDialogSectionHeader {
|
|
text: Translation.tr("Brightness")
|
|
}
|
|
|
|
WindowDialogSeparator {
|
|
Layout.topMargin: -22
|
|
Layout.leftMargin: 0
|
|
Layout.rightMargin: 0
|
|
}
|
|
|
|
Column {
|
|
id: brightnessColumn
|
|
Layout.topMargin: -16
|
|
Layout.fillWidth: true
|
|
|
|
WindowDialogSlider {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
leftMargin: 4
|
|
rightMargin: 4
|
|
}
|
|
value: root.brightnessMonitor.brightness
|
|
onMoved: root.brightnessMonitor.setBrightness(value)
|
|
}
|
|
}
|
|
|
|
WindowDialogSectionHeader {
|
|
text: Translation.tr("Gamma")
|
|
}
|
|
|
|
WindowDialogSeparator {
|
|
Layout.topMargin: -22
|
|
Layout.leftMargin: 0
|
|
Layout.rightMargin: 0
|
|
}
|
|
|
|
Column {
|
|
id: gammaColumn
|
|
Layout.topMargin: -16
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
WindowDialogSlider {
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
leftMargin: 4
|
|
rightMargin: 4
|
|
}
|
|
from: Hyprsunset.gammaLowerLimit / 100
|
|
value: Hyprsunset.gamma / 100
|
|
onMoved: Hyprsunset.setGamma(value * 100)
|
|
tooltipContent: `${Math.round(value * 100)}%`
|
|
}
|
|
}
|
|
|
|
WindowDialogButtonRow {
|
|
Layout.fillWidth: true
|
|
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
DialogButton {
|
|
buttonText: Translation.tr("Done")
|
|
onClicked: root.dismiss()
|
|
}
|
|
}
|
|
}
|