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-sink
würden alle aktiven Eingabeströme zum neuen Sink verschoben, es virtualSink
wäre jedoch vollkommen akzeptabel, über die Eingabeströme zu iterieren, auf die verwiesen wird.