// 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 ] } property var muted: Pipewire.defaultAudioSink?.audio.muted padding: 0 MouseArea{ id: vol_button anchors.fill: parent hoverEnabled: true cursorShape: Qt.PointingHandCursor onClicked: muted = !muted } background: Rectangle { color: (vol_button.containsMouse) ? Resources.palette.altbg : 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: (muted) ? "" : vol + "%" color: Resources.palette.fg } Class.TopbarIcon { text: if (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: (muted) ? Resources.palette.scarlet : Resources.palette.orange } } }