Como configurar coletores PulseAudio em grupos?

Como configurar coletores PulseAudio em grupos?

Gostaria de configurar algum tipo de coletor virtual ou grupo de origem que me permita alterar um coletor para vários fluxos de entrada ativos. Até agora, tenho usado o seguinte script para definir todos os fluxos de entrada para a fonte padrão:

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

Ou para mover apenas as entradas para o último coletor padrão:

#!/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
}

No entanto, isso não atende às minhas necessidades. Soluções semelhantes pressupõem que desejo que todos os fluxos de entrada que apontam para um coletor de destino sejam movidos para outro. Gostaria de uma solução que fornecesse o seguinte comportamento:

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

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

Idealmente, set-sinkmoveria todos os fluxos de entrada ativos para o novo coletor, mas iterar sobre os fluxos de entrada apontados virtualSinkseria perfeitamente aceitável.

informação relacionada