Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Dependencies: pulseaudio-utils grep coreutils mawk
- # Based on http://blog.waan.name/pulseaudio-setting-volume-from-command-line/
- # SINK_NAME="`pacmd dump | grep set-sink-volume | awk '{print $2}' | head -1`" # this is auto detect but it may break using the reset action to fix maxed volume at login
- SINK_NAME="alsa_output.pci-0000_00_1b.0.analog-stereo"
- VOL_STEP="0x01000"
- function wait {
- while [ -z "$VOL_NOW" ]; do
- VOL_NOW=`pacmd dump | grep -P "^set-sink-volume $SINK_NAME\s+" | awk '{print $3}'`
- if [ -z "$VOL_NOW" ]; then
- echo "Waiting on volume to become setable (infinite loop on invalid sink name)"
- sleep 0.7
- fi
- done
- }
- if [ "$1" == "--help" ]; then
- echo "Usage: `basename $0` [ACTION] [SINK] [STEP]"
- echo "Action:"
- echo " plus Increase volume by one step"
- echo " minus Decrease volume by one step"
- echo " mute Toggle volume mute status"
- echo " reset Re-apply current volume (useful if you have maxed volume at login)"
- echo " dump List sink name(s)"
- echo " delay Don't exit till audio is adjustable"
- echo "Sink (Optional):"
- echo " Default is '$SINK_NAME'"
- echo " Run '`basename $0` dump' for a list"
- echo "Step (Optional):"
- echo " Increment to adjust volume by"
- echo " Default is '$VOL_STEP'"
- echo "Note:"
- echo " Configure defaults by editing lines 3 and 4 of `dirname $0`/`basename $0`"
- echo " To set STEP and not SINK use empty quotes for SINK"
- exit
- fi
- if [ -n "$2" ]; then
- SINK_NAME="$2"
- fi
- if [ -n "$3" ]; then
- VOL_STEP="$3"
- fi
- case "$1" in
- plus)
- wait
- VOL_NEW=$((VOL_NOW + VOL_STEP))
- if [ $VOL_NEW -gt $((0x10000)) ]; then
- VOL_NEW=$((0x10000))
- fi
- pactl set-sink-volume $SINK_NAME `printf "0x%X" $VOL_NEW`
- ;;
- minus)
- wait
- 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`
- ;;
- mute)
- wait
- MUTE_STATE=`pacmd dump | grep -P "^set-sink-mute $SINK_NAME\s+" | awk '{print $3}'`
- if [ $MUTE_STATE = no ]; then
- pactl set-sink-mute $SINK_NAME 1
- elif [ $MUTE_STATE = yes ]; then
- pactl set-sink-mute $SINK_NAME 0
- fi
- ;;
- reset)
- wait
- pactl set-sink-volume $SINK_NAME `printf "0x%X" $VOL_NOW`
- ;;
- delay)
- wait
- ;;
- dump)
- SINK="`pacmd dump | grep set-sink-volume | awk '{print $2}'`"
- if [ -z "$SINK" ]; then
- echo "Looks like you are going to have a bad day"
- echo "No Sinks found"
- else
- echo "$SINK"
- fi
- ;;
- *)
- `dirname $0`/`basename $0` --help
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement