import Quickshell import Quickshell.Io import QtQuick import QtQuick.Layouts import "../constants" import "../services" Text { id: root required property TopBar parentWindow property string volumeText: "" property list volumeDudes: ["⸝(°-°)⸜","ヽ(°∘°)ノ","ヽ(°o°)ノ","ヽ(°O°)ノ","ヽ(°ᗜ°)ノ","ヽ(°〇°)ノ","ᕙ( ᗒᗣᗕ )ᕗ"] property int volumeDudeIndex: 0 property int dudeStep: 100 / volumeDudes.length property AudioService audioService: AudioService { onVolumeChanged: function (volume) { root.changeVolume(volume); } } function changeVolume(volume) { var dudeIndex = Math.min(Math.floor(volume / root.dudeStep), root.volumeDudes.length - 1); root.text = volume + "% " + root.volumeDudes[dudeIndex]; volumeText = volume + "% " + root.volumeDudes[dudeIndex]; } text: volumeText color: Colors.md3.on_primary_fixed font { family: Constants.fontFamily pixelSize: Constants.fontSize bold: false } MouseArea { anchors.fill: parent hoverEnabled: true onClicked: { pavuControlProcess.running = true; } onWheel: function (wheel) { if (wheel.angleDelta.y > 0) { root.audioService.volumeUp(); } else { root.audioService.volumeDown(); } } } Process { id: pavuControlProcess command: ["pavucontrol"] } Component.onCompleted: { root.audioService.volumeUp(); // trigger initial volume fetch } }