55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | 
