diff --git a/README.md b/README.md index 40fa642c..536680f6 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,8 @@ default, you must create it manually. "expire": false }, "osd": { + "enabled": true, + "enableBrightness": true, "hideDelay": 2000 }, "paths": { diff --git a/config/OsdConfig.qml b/config/OsdConfig.qml index e5ca4bd4..ea2375bf 100644 --- a/config/OsdConfig.qml +++ b/config/OsdConfig.qml @@ -3,6 +3,7 @@ import Quickshell.Io JsonObject { property bool enabled: true property int hideDelay: 2000 + property bool enableBrightness: true property Sizes sizes: Sizes {} component Sizes: JsonObject { diff --git a/modules/osd/Content.qml b/modules/osd/Content.qml index 09a4ca68..80fc7146 100644 --- a/modules/osd/Content.qml +++ b/modules/osd/Content.qml @@ -1,3 +1,5 @@ +pragma ComponentBehavior: Bound + import qs.components.controls import qs.services import qs.config @@ -16,6 +18,7 @@ Column { spacing: Appearance.spacing.normal + // Speaker volume CustomMouseArea { implicitWidth: Config.osd.sizes.sliderWidth implicitHeight: Config.osd.sizes.sliderHeight @@ -36,26 +39,35 @@ Column { } } - CustomMouseArea { - implicitWidth: Config.osd.sizes.sliderWidth - implicitHeight: Config.osd.sizes.sliderHeight + // Brightness + WrappedLoader { + active: Config.osd.enableBrightness - onWheel: event => { - const monitor = root.monitor; - if (!monitor) - return; - if (event.angleDelta.y > 0) - monitor.setBrightness(monitor.brightness + 0.1); - else if (event.angleDelta.y < 0) - monitor.setBrightness(monitor.brightness - 0.1); - } + sourceComponent: CustomMouseArea { + implicitWidth: Config.osd.sizes.sliderWidth + implicitHeight: Config.osd.sizes.sliderHeight - FilledSlider { - anchors.fill: parent + onWheel: event => { + const monitor = root.monitor; + if (!monitor) + return; + if (event.angleDelta.y > 0) + monitor.setBrightness(monitor.brightness + 0.1); + else if (event.angleDelta.y < 0) + monitor.setBrightness(monitor.brightness - 0.1); + } - icon: `brightness_${(Math.round(value * 6) + 1)}` - value: root.monitor?.brightness ?? 0 - onMoved: root.monitor?.setBrightness(value) + FilledSlider { + anchors.fill: parent + + icon: `brightness_${(Math.round(value * 6) + 1)}` + value: root.monitor?.brightness ?? 0 + onMoved: root.monitor?.setBrightness(value) + } } } + component WrappedLoader: Loader { + asynchronous: true + visible: active + } }