53 lines
1.3 KiB
Bash
Executable File
53 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright 2015 Alexander Tsepkov
|
|
|
|
|
|
#SINK_NAME="alsa_output.pci-0000_00_1b.0.analog-stereo"
|
|
#SINK_NAME="alsa_output.pci-0000_00_1b.0.hdmi-stereo"
|
|
SOUND_DEVICE=`pacmd dump | grep -P "^set-card-profile" | grep stereo | cut -d: -f2 | cut -d+ -f1`
|
|
SINK_NAME="alsa_output.pci-0000_00_1b.0.$SOUND_DEVICE"
|
|
VOL_STEP="0x01000"
|
|
|
|
MUTE_STATE=`pacmd dump | grep -P "^set-sink-mute $SINK_NAME\s+" | perl -p -i -e 's/.+\s(yes|no)$/$1/'`
|
|
VOL_NOW=`pacmd dump | grep -P "^set-sink-volume $SINK_NAME\s+" | perl -p -i -e 's/.+\s(.x.+)$/$1/'`
|
|
VOL_MAX=$((0x10000))
|
|
|
|
case "$1" in
|
|
plus)
|
|
if [ $MUTE_STATE = yes ]; then
|
|
echo "Muted"
|
|
else
|
|
VOL_NEW=$((VOL_NOW + VOL_STEP))
|
|
if [ $VOL_NEW -gt $VOL_MAX ]
|
|
then
|
|
VOL_NEW=$VOL_MAX
|
|
fi
|
|
pactl set-sink-volume $SINK_NAME `printf "0x%X" $VOL_NEW`
|
|
echo "$((100*VOL_NEW / VOL_MAX))%"
|
|
fi
|
|
|
|
;;
|
|
minus)
|
|
if [ $MUTE_STATE = yes ]; then
|
|
echo "Muted"
|
|
else
|
|
VOL_NEW=$((VOL_NOW - VOL_STEP))
|
|
if [ $(($VOL_NEW)) -lt $((0x00000)) ]
|
|
then
|
|
VOL_NEW=$((0x00000))
|
|
fi
|
|
pactl set-sink-volume $SINK_NAME `printf "0x%X" $VOL_NEW`
|
|
echo "$((100*VOL_NEW / VOL_MAX))%"
|
|
fi
|
|
|
|
;;
|
|
mute)
|
|
if [ $MUTE_STATE = no ]; then
|
|
pactl set-sink-mute $SINK_NAME 1
|
|
echo "Muted"
|
|
elif [ $MUTE_STATE = yes ]; then
|
|
pactl set-sink-mute $SINK_NAME 0
|
|
echo "$((100*VOL_NOW / VOL_MAX))%"
|
|
fi
|
|
esac
|