55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
# add your volume and mute attributes here (mixerctl -af /dev/mixer?)
|
||
|
_volumelist="outputs.master outputs.play"
|
||
|
_mutelist="outputs.master.mute outputs.play_mute"
|
||
|
|
||
|
[ -z $1 ] && print "$0 [volume]" && exit 2
|
||
|
|
||
|
_mute() {
|
||
|
# $1 = device
|
||
|
# $2 = on/off
|
||
|
for _entry in $_mutelist;
|
||
|
do
|
||
|
if mixerctl -f $1 2>&1 | cut -d"=" -f1 | grep -q $_entry;
|
||
|
then
|
||
|
print "$1: $_entry => $2"
|
||
|
mixerctl -qf $1 $_entry=$2
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
_vol() {
|
||
|
# $1 = device
|
||
|
# $2 = volume
|
||
|
for _entry in $_volumelist;
|
||
|
do
|
||
|
if mixerctl -f $1 2>&1 | cut -d"=" -f1 | grep -q $_entry;
|
||
|
then
|
||
|
print "$1: $_entry => $2"
|
||
|
mixerctl -qf $1 $_entry=$2
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
for _mixdev in /dev/mixer*;
|
||
|
do
|
||
|
# do not follow symlinks (eg. /dev/mixer)
|
||
|
[ -h $_mixdev ] && continue
|
||
|
|
||
|
# if volume is 0 set volume and mute
|
||
|
# if volume is >0 set volume and unmute
|
||
|
if [ "$1" == "0" ]; then
|
||
|
_mute $_mixdev on
|
||
|
_vol $_mixdev 0
|
||
|
elif [ "$1" -gt "0" ] && [ "$1" -lt "1001" ]; then
|
||
|
_mute $_mixdev off
|
||
|
_vol $_mixdev $1
|
||
|
else
|
||
|
print "Use number between 0 and 1000"
|
||
|
exit 1
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
printf "VOL\n" >> /tmp/lemonbar.fifo
|