Improved volume block - added one for pipewire users

This commit is contained in:
Ashish Kumar Yadav 2021-07-13 20:01:03 +05:30
parent 92cd084cfe
commit b227e8bf42
2 changed files with 79 additions and 37 deletions

44
blocks.def/volume.pipewire.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/sh
# (for pipewire users)
# This script parses the output of `pacmd list-sinks' to find volume and mute
# status of the default audio sink and whether headphones are plugged in or not
# Also see ../daemons/pulse_daemon.sh
sink=$(pactl info | awk '$1 == "Default" && $2 == "Sink:" {print $3}')
[ -n "$sink" ] || exit
pactl list sinks | awk -v sink="$sink" '
BEGIN {
ICONsn = "\x0c\x0b" # headphone unplugged, not muted
ICONsm = "\x0d\x0b" # headphone unplugged, muted
ICONhn = "\x0c\x0b" # headphone plugged in, not muted
ICONhm = "\x0d\x0b" # headphone plugged in, muted
}
f {
if ($1 == "Mute:" && $2 == "yes") {
m = 1
} else if ($1 == "Volume:") {
if ($3 == $10) {
vb = $5
} else {
vl = $5
vr = $12
}
} else if ($1 == "Active" && $2 == "Port:") {
if (tolower($3) ~ /headphone/)
h = 1
exit
}
next
}
$1 == "Name:" && $2 == sink {
f = 1
}
END {
if (f) {
printf "%s", h ? (m ? ICONhm : ICONhn) : (m ? ICONsm : ICONsn)
if (vb)
print vb
else
printf "L%s R%s\n", vl, vr
}
}
'

View file

@ -1,44 +1,42 @@
#!/bin/sh #!/bin/sh
# (for pulseaudio users)
# This script parses the output of `pacmd list-sinks' to find volume and mute # This script parses the output of `pacmd list-sinks' to find volume and mute
# status of the default audio sink and whether headphones are plugged in or not # status of the default audio sink and whether headphones are plugged in or not
# Also see ../daemons/pulse_daemon.sh # Also see ../daemons/pulse_daemon.sh
pacmd list-sinks | pacmd list-sinks | awk '
awk ' BEGIN {
BEGIN { ICONsn = "\x0c\x0b" # headphone unplugged, not muted
ICONsn = "\x0c\x0b" # headphone unplugged, not muted ICONsm = "\x0d\x0b" # headphone unplugged, muted
ICONsm = "\x0d\x0b" # headphone unplugged, muted ICONhn = "\x0c\x0b" # headphone plugged in, not muted
ICONhn = "\x0c\x0b" # headphone plugged in, not muted ICONhm = "\x0d\x0b" # headphone plugged in, muted
ICONhm = "\x0d\x0b" # headphone plugged in, muted }
} f {
{ if ($1 == "muted:" && $2 == "yes") {
if (f) { m = 1
if ($1 == "index:") { } else if ($1 == "volume:") {
exit if ($3 == $10) {
} vb = $5
if ($1 == "muted:" && $2 == "yes") { } else {
m = 1 vl = $5
} else if ($1 == "volume:") { vr = $12
if ($3 == $10) {
vb = $5
} else {
vl = $5
vr = $12
}
} else if ($1 == "active" && $2 == "port:" && $3 ~ /headphone/) {
h = 1
}
} else if ($1 == "*" && $2 == "index:") {
f = 1
} }
} else if ($1 == "active" && $2 == "port:") {
if (tolower($3) ~ /headphone/)
h = 1
exit
} }
END { next
if (f) { }
printf "%s", h ? (m ? ICONhm : ICONhn) : (m ? ICONsm : ICONsn) $1 == "*" && $2 == "index:" {
if (vb) { f = 1
print vb }
} else { END {
printf "L%s R%s\n", vl, vr if (f) {
} printf "%s", h ? (m ? ICONhm : ICONhn) : (m ? ICONsm : ICONsn)
} if (vb)
print vb
else
printf "L%s R%s\n", vl, vr
} }
' }
'