-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvolumectrl
executable file
·56 lines (49 loc) · 1.61 KB
/
volumectrl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh
# mute audio with `app_name=Steam mute={true|false|toggle} volumectrl`
# set volume with `app_name=Steam volume={0 ... 1.0} volumectrl`
# or both at once
usage(){
echo "usage: volumectrl [-n Steam ] [ [-m] | [-u] | [-t] ] [-v] | [-h]"
}
while [ "$1" != "" ]; do
case $1 in
-n | --name ) shift
app_name=$1
;;
-m | --mute ) mute=true
;;
-u | --unmute ) mute=false
;;
-t | --toggle ) mute=toggle
;;
-v | --volume ) volume=1.0
;;
-h | --help ) usage
exit
;;
esac
shift
done
current_sink_num=''
sink_num_check=''
app_name_check=''
pactl list sink-inputs |while read line; do \
sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
if [ "$sink_num_check" != "" ]; then
current_sink_num="$sink_num_check"
else
app_name_check=$(echo "$line" \
|sed -rn 's/application.name = "([^"]*)"/\1/p')
if [ "$app_name_check" = "$app_name" ]; then
echo "$current_sink_num" "$app_name_check"
if [ "$mute" != "" ]; then
pactl set-sink-input-mute "$current_sink_num" $mute
exit
fi
if [ "$volume" != "" ]; then
pactl set-sink-input-volume "$current_sink_num" $volume
exit
fi
fi
fi
done