diff --git a/.config/quickshell/modules/onScreenDisplay/OnScreenDisplayVolume.qml b/.config/quickshell/modules/onScreenDisplay/OnScreenDisplayVolume.qml index 6bd83fa86..dfe4702ad 100644 --- a/.config/quickshell/modules/onScreenDisplay/OnScreenDisplayVolume.qml +++ b/.config/quickshell/modules/onScreenDisplay/OnScreenDisplayVolume.qml @@ -12,6 +12,7 @@ import Quickshell.Hyprland Scope { id: root property bool showOsdValues: false + property ShellScreen focusedScreen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name) function triggerOsd() { showOsdValues = true @@ -47,70 +48,71 @@ Scope { } } - Variants { - model: Quickshell.screens + Loader { + id: osdLoader + active: showOsdValues - Loader { - id: osdLoader - property var modelData - active: showOsdValues - PanelWindow { - screen: modelData - exclusionMode: ExclusionMode.Normal - WlrLayershell.namespace: "quickshell:onScreenDisplay" - WlrLayershell.layer: WlrLayer.Overlay - color: "transparent" + PanelWindow { + id: osdRoot - anchors { - top: true + Connections { + target: root + function onFocusedScreenChanged() { + osdRoot.screen = root.focusedScreen } - mask: Region { - item: osdValuesWrapper - } - - implicitWidth: columnLayout.implicitWidth - implicitHeight: columnLayout.implicitHeight - visible: osdLoader.active - - ColumnLayout { - id: columnLayout - anchors.horizontalCenter: parent.horizontalCenter - Item { - height: 1 // Prevent Wayland protocol error - } - Item { - id: osdValuesWrapper - // Extra space for shadow - implicitHeight: true ? (osdValues.implicitHeight + Appearance.sizes.elevationMargin * 2) : 0 - implicitWidth: osdValues.implicitWidth + Appearance.sizes.elevationMargin * 2 - clip: true - - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: root.showOsdValues = false - } - - Behavior on implicitHeight { - NumberAnimation { - duration: Appearance.animation.menuDecel.duration - easing.type: Appearance.animation.menuDecel.type - } - } - - OsdValueIndicator { - id: osdValues - anchors.centerIn: parent - value: Audio.sink?.audio.volume ?? 0 - icon: Audio.sink?.audio.muted ? "volume_off" : "volume_up" - name: qsTr("Volume") - } - } - } - } - } + exclusionMode: ExclusionMode.Normal + WlrLayershell.namespace: "quickshell:onScreenDisplay" + WlrLayershell.layer: WlrLayer.Overlay + color: "transparent" + + anchors.top: true + mask: Region { + item: osdValuesWrapper + } + + implicitWidth: columnLayout.implicitWidth + implicitHeight: columnLayout.implicitHeight + visible: osdLoader.active + + ColumnLayout { + id: columnLayout + anchors.horizontalCenter: parent.horizontalCenter + Item { + height: 1 // Prevent Wayland protocol error + } + Item { + id: osdValuesWrapper + // Extra space for shadow + implicitHeight: true ? (osdValues.implicitHeight + Appearance.sizes.elevationMargin * 2) : 0 + implicitWidth: osdValues.implicitWidth + Appearance.sizes.elevationMargin * 2 + clip: true + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onEntered: root.showOsdValues = false + } + + Behavior on implicitHeight { + NumberAnimation { + duration: Appearance.animation.menuDecel.duration + easing.type: Appearance.animation.menuDecel.type + } + } + + OsdValueIndicator { + id: osdValues + anchors.centerIn: parent + value: Audio.sink?.audio.volume ?? 0 + icon: Audio.sink?.audio.muted ? "volume_off" : "volume_up" + name: qsTr("Volume") + } + } + } + + } } IpcHandler {