Expose live application audio groups

This commit is contained in:
Gabriel Brown
2026-08-18 15:00:18 -04:00
parent 9aea519e54
commit 0f3bddc452
3 changed files with 53 additions and 0 deletions
@@ -8,6 +8,8 @@ import Quickshell
import Quickshell.Services.Pipewire
import QtQuick
import "AudioStreams.js" as AudioStreams
Singleton {
id: root
@@ -18,6 +20,13 @@ Singleton {
!node.isStream
&& (node.type & PwNodeType.AudioSource) === PwNodeType.AudioSource)
readonly property var playbackStreams: Pipewire.nodes.values.filter(node =>
node.ready && node.audio
&& (node.type & PwNodeType.AudioOutStream) === PwNodeType.AudioOutStream)
readonly property var applications: AudioStreams.group(
root.playbackStreams, PwNodeType.AudioOutStream)
function nodes(output: bool): var {
return output ? root.outputs : root.inputs;
}
@@ -40,4 +49,20 @@ Singleton {
return "Unknown device";
return node.description || node.nickname || node.name || "Unknown device";
}
function applicationVolume(application: var): real {
return AudioStreams.volume(application);
}
function applicationMuted(application: var): bool {
return AudioStreams.muted(application);
}
function setApplicationVolume(application: var, value: real): bool {
return AudioStreams.setVolume(application, value);
}
function setApplicationMuted(application: var, muted: bool): bool {
return AudioStreams.setMuted(application, muted);
}
}