bar/modules/Volume.qml (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
// Volume.qml
import QtQuick
import Quickshell
import QtQuick.Controls.Basic
import QtQuick.Layouts
import Quickshell.Services.Pipewire
import "../classes" as Class
import "../../"
Button {
PwObjectTracker {
objects: [ Pipewire.defaultAudioSink ]
}
padding: 0
onClicked: Pipewire.defaultAudioSink.audio.muted = !Pipewire.defaultAudioSink.audio.muted
background: Rectangle {
// implicitWidth: 0
// implicitHeight: 0
color: Resources.palette.bg
}
contentItem: Class.RightRowLayout {
id: volume_module
Layout.alignment: Qt.AlignVCenter
Class.TopbarText {
id: volume_indicator
property var vol: Math.round((Pipewire.defaultAudioSink?.audio.volume ?? 0) * 100)
text: (Pipewire.defaultAudioSink?.audio.muted) ? "" :vol + "%"
color: (Pipewire.defaultAudioSink?.audio.muted) ? Resources.palette.grey : Resources.palette.fg
}
Class.TopbarIcon {
text: if (Pipewire.defaultAudioSink?.audio.muted) {
Icons.volume.mute
} else if (volume_indicator.vol == 0) {
Icons.volume.off
} else if (volume_indicator.vol <= 50) {
Icons.volume.low
} else if (volume_indicator.vol > 50) {
Icons.volume.high
} else {
Icons.volume.low
}
color: (Pipewire.defaultAudioSink?.audio.muted) ? Resources.palette.scarlet : Resources.palette.orange
}
Class.TopSep{}
}
}
|