55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								CACHE_DIR="$HOME/.cache/audio-control"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[ "$#" -eq 0 ] &&
							 | 
						||
| 
								 | 
							
									echo "Requires a command. Run with 'help' for a list of commands." &&
							 | 
						||
| 
								 | 
							
									exit 1
							 | 
						||
| 
								 | 
							
								[ "$#" -gt 1 ] &&
							 | 
						||
| 
								 | 
							
									echo "Too many arguments. Run with 'help' for a list of commands." &&
							 | 
						||
| 
								 | 
							
									exit 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[ -d $CACHE_DIR ] ||
							 | 
						||
| 
								 | 
							
									mkdir -p $CACHE_DIR
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								query_outport() {
							 | 
						||
| 
								 | 
							
									active_port="$(pactl list sinks | grep 'Active Port')"
							 | 
						||
| 
								 | 
							
									if [[ $active_port == *"speaker"* ]]
							 | 
						||
| 
								 | 
							
									then
							 | 
						||
| 
								 | 
							
										echo "SPK" > $CACHE_DIR/port
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
										echo "HDF" > $CACHE_DIR/port
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									pactl list sinks | awk '/Mute/ { if ($2 == "no") print "VOL"; else print "MUT"; }' > $CACHE_DIR/vol_status
							 | 
						||
| 
								 | 
							
									pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1  )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,' > $CACHE_DIR/vol_level
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								case $1 in
							 | 
						||
| 
								 | 
							
									"mute")
							 | 
						||
| 
								 | 
							
										pactl set-sink-mute 0 toggle
							 | 
						||
| 
								 | 
							
										pactl list sinks | awk '/Mute/ { if ($2 == "no") print "VOL"; else print "MUT"; }' > $CACHE_DIR/vol_status;;
							 | 
						||
| 
								 | 
							
									"vol-up")
							 | 
						||
| 
								 | 
							
										pactl set-sink-volume 0 +5%
							 | 
						||
| 
								 | 
							
										pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1  )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,' > $CACHE_DIR/vol_level;;
							 | 
						||
| 
								 | 
							
									"vol-down")
							 | 
						||
| 
								 | 
							
										pactl set-sink-volume 0 -5%
							 | 
						||
| 
								 | 
							
										pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1  )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,' > $CACHE_DIR/vol_level;;
							 | 
						||
| 
								 | 
							
									"reset")
							 | 
						||
| 
								 | 
							
										pactl set-sink-volume 0 50%
							 | 
						||
| 
								 | 
							
										pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1  )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,' > $CACHE_DIR/vol_level;;
							 | 
						||
| 
								 | 
							
									"toggle-port")
							 | 
						||
| 
								 | 
							
										query_outport;;
							 | 
						||
| 
								 | 
							
									"help")
							 | 
						||
| 
								 | 
							
										echo "USAGE: audio-control <command>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Commands:
							 | 
						||
| 
								 | 
							
									mute          toggle mute
							 | 
						||
| 
								 | 
							
									vol-up        raise the volume
							 | 
						||
| 
								 | 
							
									vol-down      lower the volume
							 | 
						||
| 
								 | 
							
									reset         reset volume (to round number)
							 | 
						||
| 
								 | 
							
									toggle-port   toggle the output port
							 | 
						||
| 
								 | 
							
									help          show this help information";;
							 | 
						||
| 
								 | 
							
									*)
							 | 
						||
| 
								 | 
							
										echo "Invalid command. Run with 'help' for a list of commands."
							 | 
						||
| 
								 | 
							
										exit 1;;
							 | 
						||
| 
								 | 
							
								esac
							 |