65 lines
1.6 KiB
QML
65 lines
1.6 KiB
QML
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<string> 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
|
|
}
|
|
}
|