Wie lege ich PulseAudio-Senken in Gruppen fest?

Wie lege ich PulseAudio-Senken in Gruppen fest?

Ich möchte eine Art virtuelle Senke oder Quellgruppe einrichten, die es mir ermöglicht, eine Senke für mehrere aktive Eingabeströme zu ändern. Bisher habe ich das folgende Skript verwendet, um alle Eingabeströme auf die Standardquelle einzustellen:

#!/bin/bash
pacmd set-default-sink "$1"
pacmd list-sink-inputs | grep index | while read input
do
  pacmd move-sink-input "${input##* }" "$1"
done

Oder um Eingaben nur zum letzten Standardsink zu verschieben:

#!/bin/bash
pacmd list-sinks |
grep -e "* index:" |
tr -dc "[:digit:]\n" |
{
  read old_sink
  pacmd set-default-sink "$1"
  pacmd list-sink-inputs  |
  grep -e "index:" -e "sink:" |
  grep -B 1 -e "sink: $old_sink" |
  grep -e "index:" |
  tr -dc "[:digit:]\n" |
  while read i
  do
    pacmd move-sink-input "$i" "$1"
  done
}

Dies entspricht jedoch nicht meinen Anforderungen. Ähnliche Lösungen setzen voraus, dass ich alle Eingabeströme, die auf einen Ziel-Sink verweisen, zu einem anderen verschieben möchte. Ich hätte gerne eine Lösung, die das folgende Verhalten bietet:

# previous state
sourceA -> (virtualSink -> sinkA)
sourceB -> (virtualSink -> sinkA)
sourceC -> sinkA

$ set-sink (virtualSink -> sinkB)
sourceA -> (virtualSink -> sinkB)
sourceB -> (virtualSink -> sinkB)
sourceC -> sinkA

Im Idealfall set-sinkwürden alle aktiven Eingabeströme zum neuen Sink verschoben, es virtualSinkwäre jedoch vollkommen akzeptabel, über die Eingabeströme zu iterieren, auf die verwiesen wird.

verwandte Informationen