diff --git a/Bar/Modules/Volume.qml b/Bar/Modules/Volume.qml index ad93fe7..754234c 100644 --- a/Bar/Modules/Volume.qml +++ b/Bar/Modules/Volume.qml @@ -24,14 +24,12 @@ Item { } Connections { - target: shell ?? null - function onVolumeChanged() { - if (shell && shell.volume !== volume) { - volume = shell.volume - pillIndicator.text = volume + "%" - pillIndicator.icon = volume === 0 ? "volume_off" : (volume < 30 ? "volume_down" : "volume_up") - pillIndicator.show() - } + target: shell && shell.defaultAudioSink && shell.defaultAudioSink.audio ? shell.defaultAudioSink.audio : null + onVolumeChanged: { + volume = Math.round(shell.defaultAudioSink.audio.volume * 100); + pillIndicator.text = volume + "%"; + pillIndicator.icon = volume === 0 ? "volume_off" : (volume < 30 ? "volume_down" : "volume_up"); + pillIndicator.show(); } } @@ -48,13 +46,15 @@ Item { acceptedButtons: Qt.NoButton // Accept wheel events only propagateComposedEvents: true onWheel: { - if (!shell) return; - let step = 5; + if (!shell || !shell.defaultAudioSink || !shell.defaultAudioSink.audio) return; + let step = 0.05; // 5% as float + let newVolume = shell.defaultAudioSink.audio.volume; if (wheel.angleDelta.y > 0) { - shell.volume = Math.min(100, shell.volume + step); + newVolume = Math.min(1, newVolume + step); } else if (wheel.angleDelta.y < 0) { - shell.volume = Math.max(0, shell.volume - step); + newVolume = Math.max(0, newVolume - step); } + shell.defaultAudioSink.audio.volume = newVolume; } } }