Beachten Sie, dass die Antwort von Tommi Kyntola davon abhängt, dass die Spüle verwendet wird, damit Sie die Spülen-Nummer tatsächlich erhalten.
Beachten Sie auch, dass benannte Senkenindizes mit dem gezählten Index identisch sind . Nehmen wir zum Beispiel an, wir haben 3 Waschbecken 1, 2 und 3 und dieses 3 ist unser ausgewähltes Waschbecken. Dann trennen wir die Verbindung zu Nummer 2 und hinterlassen 1 und 3. Jetzt können Sie nicht zählen, dass Sie mit Tommi Kyntolas Lösung 3 sinken, weil pactl list sinks | grep "^[[:space:]]Volume:"
Es werden nur 2 Volume-Felder ausgegeben, daher $SINK + 1
funktioniert das Weiterleiten an den Kopf / Schwanz, um die 'th-Zeile zu erhalten, nicht.
Meine Lösung basiert auf der Annahme, dass pacmd Senken immer in einer bestimmten Reihenfolge auflistet. Wenn Sie eine zuverlässigere Lösung wünschen, müssen Sie die Ausgabe analysieren.
#!/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
Hinweis: Ich weiß nicht, ob sich die Volume-Felder unterscheiden. Meine sehen wie folgt aus pacmd list-sinks
:
volume: front-left: 42706 / 65% / -11.16 dB, front-right: 42706 / 65% / -11.16 dB
Außerdem erhalte ich nur die Lautstärke des ersten Kanals (vorne links) im Prozentformat (dh Feld 5). Ihre Kanäle können sich auf verschiedenen Ebenen befinden.
BEARBEITEN:
Auf den zweiten Blick möchten Sie wahrscheinlich den Standardnamen der Senke pacmd stat
für eine weniger komplizierte Lösung erhalten:
#/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
gibt Ihnen die Lautstärke, aber nicht in einem schönen einfachen Format wie Set-Sink-Volume.