pactl list sinks | grep '^[[:space:]]Volume:' | \
head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,,'
É isso que tenho. Não é legal, mas foi o suficiente para o meu uso. Não consegui encontrar o caminho para o fazer. O pactl
simplesmente não parece ter nenhum meio de listar apenas um coletor, mas eles são impressos em ordem crescente. Assim, seleciona a enésima linha usando tail
e head
. Observe que a linha de volume pode ter volumes separados para os canais direito e esquerdo e que sed
substituto apenas escolhe o primeiro, porque eu precisava disso.
Para o registro, eu uso o pactl list sinks short
para obter meu número de afundamento ativo:
pactl list short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,,'
EDIT 2017-10-05: Eu tive que ajustar um pouco devido a mudanças no pulseaudio. Aqui está o que eu tenho agora:
SINK=$( pactl list short sinks | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,,' | head -n 1 )
NOW=$( pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,,' )
Eu tenho MOD
definido como +10 ou -10 e faço algumas verificações de limite e finalmente:
pactl set-sink-volume $SINK ${MOD}%