// 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{} } }