Nota che la risposta di Tommi Kyntola si basa sul fatto che il lavandino sia in uso in modo da poter effettivamente ottenere il numero del lavandino.
Si noti inoltre che si basa sugli indici sink denominati per essere gli stessi dell'indice conteggiato . Diciamo, ad esempio, che abbiamo 3 lavandini 1, 2 e 3 e che 3 è il nostro lavandino selezionato, quindi disconnettiamo il numero 2, lasciandoci con 1 e 3. Ora non puoi contare per affondare 3 con la soluzione di Tommi Kyntola perché pactl list sinks | grep "^[[:space:]]Volume:"
produrrà solo 2 campi Volume, quindi tubazioni in testa / coda per ottenere che la $SINK + 1
riga non funzionerà.
La mia soluzione funziona basandosi sul presupposto che pacmd elencherà sempre i sink in un ordine specifico. Se si desidera una soluzione più affidabile, è necessario analizzare l'output.
#!/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: non so se i campi del volume differiscono, il mio assomiglia a questo (da pacmd list-sinks
):
volume: front-left: 42706 / 65% / -11.16 dB, front-right: 42706 / 65% / -11.16 dB
Inoltre sto solo ottenendo il volume del primo canale (anteriore sinistro) in formato percentuale (cioè, campo 5), i tuoi canali potrebbero essere a livelli diversi.
MODIFICARE:
A pensarci bene probabilmente vorrai effettivamente ottenere il nome del sink predefinito da pacmd stat
per una soluzione meno complicata:
#/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
ti dà il volume, ma non in un formato semplice come set-sink-volume.