Observe que a resposta de Tommi Kyntola depende da pia estar em uso para que você possa realmente obter o número da pia.
Observe também que ele depende dos índices de coletor nomeados para serem os mesmos do índice contado . Digamos, por exemplo, que temos 3 pias 1, 2 e 3 e que 3 é o nosso coletor selecionado, então desconectamos o número 2, deixando-nos 1 e 3. Agora você não pode contar com o coletor 3 com a solução de Tommi Kyntola porque pactl list sinks | grep "^[[:space:]]Volume:"
produzirá apenas 2 campos de volume, portanto, a tubulação para a cabeça / cauda para obter a $SINK + 1
'linha th' não funcionará.
Minha solução funciona com base no pressuposto de que o pacmd sempre listará pias em uma ordem específica. Se você deseja uma solução mais confiável, precisa analisar a saída.
#!/bin/sh
# Get the index of the selected sink:
getsink() {
pacmd list-sinks |
awk '/index:/{i++} /* index:/{print i; exit}'
}
# Get the selected sink volume
getvolume() {
pacmd list-sinks |
awk '/^\svolume:/{i++} i=='$(getsink)'{print $5; exit}'
}
getvolume
Nota: Não sei se os campos de volume diferem, o meu se parece com este (de pacmd list-sinks
):
volume: front-left: 42706 / 65% / -11.16 dB, front-right: 42706 / 65% / -11.16 dB
Além disso, estou obtendo apenas o volume do primeiro canal (frente-esquerda) em formato percentual (ou seja, campo 5), seus canais podem estar em níveis diferentes.
EDITAR:
Pensando bem, você provavelmente deseja obter o nome do coletor padrão pacmd stat
para uma solução menos complicada:
#/bin/sh
getdefaultsinkname() {
pacmd stat | awk -F": " '/^Default sink name: /{print $2}'
}
getdefaultsinkvol() {
pacmd list-sinks |
awk '/^\s+name: /{indefault = $2 == "<'$(getdefaultsinkname)'>"}
/^\s+volume: / && indefault {print $5; exit}'
}
setdefaulsinkvol() {
pactl $(getdefaultsinkname) $1
}
pactl list sinks
fornece o volume, mas não em um formato fácil e agradável, como set-sink-volume.