Notez que la réponse de Tommi Kyntola repose sur l'évier à utiliser afin que vous puissiez réellement obtenir le numéro de l'évier.
Notez également qu'il s'appuie sur des index récepteurs nommés pour être identiques à l' index compté . Disons, par exemple, que nous avons 3 éviers 1, 2 et 3 et que 3 est notre évier sélectionné, nous déconnectons ensuite le numéro 2, nous laissant avec 1 et 3. Maintenant, vous ne pouvez pas compter pour couler 3 avec la solution de Tommi Kyntola parce que pactl list sinks | grep "^[[:space:]]Volume:"
ne produira que 2 champs de volume, donc la tuyauterie vers la tête / la queue pour obtenir la $SINK + 1
'e ligne ne fonctionnera pas.
Ma solution fonctionne sur la base de l'hypothèse que pacmd listera toujours les puits dans un ordre spécifique. Si vous souhaitez une solution plus fiable, vous devez analyser la sortie.
#!/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
Remarque: je ne sais pas si les champs de volume diffèrent, le mien ressemble à ceci (de pacmd list-sinks
):
volume: front-left: 42706 / 65% / -11.16 dB, front-right: 42706 / 65% / -11.16 dB
De plus, je ne reçois que le volume de la première chaîne (avant gauche) en format pourcentage (c'est-à-dire le champ 5), vos chaînes peuvent être à différents niveaux.
MODIFIER:
Après réflexion, vous voulez probablement obtenir le nom du récepteur par défaut pacmd stat
pour une solution moins compliquée:
#/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
vous donne le volume, mais pas dans un format simple et agréable comme set-sink-volume.