Detect PipeWire playback streams by sink role
This commit is contained in:
@@ -55,12 +55,18 @@ Item {
|
|||||||
// Identify true playback streams without reading node.properties here:
|
// Identify true playback streams without reading node.properties here:
|
||||||
// PwNode.properties is invalid until the node is bound, and reading it while
|
// PwNode.properties is invalid until the node is bound, and reading it while
|
||||||
// capture streams are appearing (for example, when Voxtype starts recording)
|
// capture streams are appearing (for example, when Voxtype starts recording)
|
||||||
// can destabilize Quickshell's Pipewire service. `type` mirrors media.class
|
// can destabilize Quickshell's Pipewire service. Quickshell versions differ
|
||||||
// and is safe enough for pre-bind filtering.
|
// in how `type` is exposed (media.class, enum name, or numeric enum), but
|
||||||
|
// playback streams consistently accept audio input from clients and publish
|
||||||
|
// `isSink: true`; capture streams publish as stream sources.
|
||||||
function isPlaybackStream(node) {
|
function isPlaybackStream(node) {
|
||||||
if (!node) return false
|
if (!node || !node.isStream) return false
|
||||||
|
if (node.isSink === true) return true
|
||||||
|
|
||||||
var mediaClass = String(node.type || "")
|
var mediaClass = String(node.type || "")
|
||||||
return mediaClass.indexOf("Output") !== -1
|
return mediaClass.indexOf("Stream/Output/Audio") !== -1
|
||||||
|
|| mediaClass.indexOf("AudioOutStream") !== -1
|
||||||
|
|| mediaClass.indexOf("Output") !== -1
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly property var audioSinks: {
|
readonly property var audioSinks: {
|
||||||
|
|||||||
Reference in New Issue
Block a user