pragma Singleton import Quickshell import QtQuick import Quickshell.Services.Pipewire Singleton { id: root property bool ready: Pipewire.ready property bool muted: defaultAudio.audio.muted property PwNode defaultAudio: Pipewire.defaultAudioSink property PwNode preferredAudio: Pipewire.preferredDefaultAudioSink property real percentage: Math.round(preferredAudio?.audio.volume * 100) readonly property list sinks: Pipewire.nodes.values.filter(n => n.audio && n.isSink && !n.isStream) readonly property list sources: Pipewire.nodes.values.filter(n => n.audio && !n.isSink && !n.isStream) PwObjectTracker { objects: [...root.sinks, ...root.sources] } function getVolumeIcon(sink) { let mute = sink.audio.muted let volume = sink.audio.volume if (mute) { return "audio-volume-muted-symbolic"; } if (volume <= 0.33) { return "audio-volume-low-symbolic"; } if (volume <= 0.66) { return "audio-volume-medium-symbolic"; } if (volume >= 0.66) { return "audio-volume-high-symbolic"; } } }