blob: a34d591fb30812b0be2fbe17f0dfc14cbe9c2261 (
plain)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#!/bin/sh
#{{{ detect
detect () {
if pgrep -x pulseaudio >/dev/null; then
PULSE='y' ; unset PIPEWIRE SNDIO ALSA
elif pgrep -x pipewire >/dev/null; then
PIPEWIRE='y' ; unset PULSE SNDIO ALSA
elif pgrep -x sndiod >/dev/null; then
SNDIO='y' ; unset PIPEWIRE PULSE ALSA
else
ALSA='y' ; unset PIPEWIRE PULSE SNDIO
fi
}
#}}}
#{{{ up
up () {
[ -n "$SNDIO" ] && sndioctl output.level=+0.05
[ -n "$PULSE$PIPEWIRE" ] && pamixer -i 5
[ -n "$ALSA" ] && amixer sset Master 5%+
}
#}}}
#{{{ down
down () {
[ -n "$SNDIO" ] && sndioctl output.level=-0.05
[ -n "$PULSE$PIPEWIRE" ] && pamixer -d 5
[ -n "$ALSA" ] && amixer sset Master 5%-
}
#}}}
#{{{ mute
mute () {
case "$1" in
spr)
[ -n "$SNDIO" ] && sndioctl output.mute=!
[ -n "$PULSE$PIPEWIRE" ] && pamixer -t
[ -n "$ALSA" ] && amixer sset Master toggle
;;
mic)
[ -n "$SNDIO" ] && sndioctl input.mute=!
[ -n "$PULSE" ] && pamixer --source 1 -t
[ -n "$PIPEWIRE$ALSA" ] && amixer sset Capture toggle
;;
esac
}
#}}}
#{{{ get
get () {
case "$1" in
volu)
[ -n "$SNDIO" ] && printf "%s%%" `sndioctl output.level | rev | cut -d'.' -f1 | rev | cut -c 1,2`
[ -n "$PULSE$PIPEWIRE" ] && printf "%s%%\n" "$(pamixer --get-volume)"
[ -n "$ALSA" ] && amixer sget Master | grep '\[[0-9]*\%\]' | sed "s/ /\n/g" | grep '%' | sed 's/\[//;s/\]//g'
;;
mute)
[ -n "$SNDIO" ] && sndioctl output.mute | cut -d'=' -f2 | sed 's/1/[off]/;s/0/[on]/'
[ -n "$PULSE$PIPEWIRE" ] && pamixer --get-mute | sed 's/[Ff]alse/\[on\]/;s/[Tt]rue/\[off\]/'
[ -n "$ALSA" ] && amixer sget Master | grep '\[o[fn]' | cut -d' ' -f8 | head -1
;;
both)
[ -n "$SNDIO" ] && printf "%s%s%%" `sndioctl output.mute | cut -d'=' -f2 | sed 's/1/[off]/;s/0/[on]/'` `sndioctl output.level | rev | cut -d'.' -f1 | rev | cut -c 1,2`
[ -n "$PULSE$PIPEWIRE" ] && printf "%s%s%%\n" `pamixer --get-mute | sed 's/[Ff]alse/\[on\]/;s/[Tt]rue/\[off\]/'` "$(pamixer --get-volume)"
[ -n "$ALSA" ] && printf "%s%s" `amixer sget Master | grep '\[o[fn]' | cut -d' ' -f8 | head -1` `amixer sget Master | grep '\[[0-9]*\%\]' | sed "s/ /\n/g" | grep '%' | sed 's/\[//;s/\]//g'`
;;
esac
}
#}}}
#{{{ setact
setact() {
if [ -n "${action+x}" ] && [ "$action" != "$1" ]; then
echo "Running $1 with $action..."
echo "Incompatible options given. Only one action may be specified per run."
return 1
else
action="$1"
fi
}
#}}}
#{{{ printhelp
printhelp () { cat << EOF
volsv: volume setter v, sets the volume despite the sound server
supported sound servers are sndio, pulseaudio, pipewire, and alsa (no bluealsa)
Actions:
-i Increase the volume
-d Decrease the volume
-t Mute the default output
-m Mute the default mic
-v Get the volume of the default output
-g Get the mute status of the default output
-a Get the volume and mute status of the default output
EOF
}
#}}}
#{{{ getopts
while getopts "idtmvga" o; do case "${o}" in
i) setact up || exit 1 ;;
d) setact down || exit 1 ;;
t) setact mute || exit 1 ;;
m) setact micm || exit 1 ;;
v) setact getv || exit 1 ;;
g) setact getm || exit 1 ;;
a) setact geta || exit 1 ;;
*) printhelp ; exit 1 ;;
esac done
#}}}
detect
#{{{ action
case "$action" in
up) up ;;
down) down ;;
mute) mute spr ;;
micm) mute mic ;;
getv) get volu ;;
getm) get mute ;;
geta) get both ;;
*) printhelp ;;
esac
#}}}
|