25 lines
733 B
Bash
25 lines
733 B
Bash
|
#!/bin/sh
|
||
|
|
||
|
# Wait for amixer to become available
|
||
|
until [ "$(amixer)" ]; do sleep 0.1; done
|
||
|
|
||
|
# `amixer events` always emits 1 event from the start, so we must skip it
|
||
|
skip=1
|
||
|
stdbuf -oL amixer events |
|
||
|
while IFS= read -r line; do
|
||
|
case ${line%%,*} in
|
||
|
('event value: numid='[34])
|
||
|
if [ "$skip" -eq 0 ]; then
|
||
|
# The `0+$2` below is to remove the '%' sign
|
||
|
# amixer sget Master |
|
||
|
# awk -F'[][]' '/Left:/ {print 0+$2 ($4 == "off" ? "!" : "")}'
|
||
|
|
||
|
# Using Pipewire/Wireplumber:
|
||
|
wpctl get-volume @DEFAULT_AUDIO_SINK@ |
|
||
|
awk '{ gsub(/\./, "", $2); print $2 ($3 == "[MUTED]" ? "!" : "")}'
|
||
|
else
|
||
|
skip=$(( skip - 1 ))
|
||
|
fi
|
||
|
esac
|
||
|
done | xob
|