You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
966 B
Bash
53 lines
966 B
Bash
#!/bin/sh
|
|
|
|
get_mic_default() {
|
|
pactl get-default-source
|
|
}
|
|
|
|
is_mic_muted() {
|
|
mic_name="$(get_mic_default)"
|
|
|
|
pactl list sources | \
|
|
awk -v mic_name="${mic_name}" '{
|
|
if ($0 ~ "Name: " mic_name) {
|
|
matched_mic_name = 1;
|
|
} else if (matched_mic_name && /Mute/) {
|
|
print $2;
|
|
exit;
|
|
}
|
|
}'
|
|
}
|
|
|
|
get_mic_status() {
|
|
is_muted="$(is_mic_muted)"
|
|
|
|
if [ "${is_muted}" = "yes" ]; then
|
|
printf "%s\n" ""
|
|
else
|
|
printf "%s\n" ""
|
|
fi
|
|
}
|
|
|
|
listen() {
|
|
get_mic_status
|
|
|
|
LANG=EN; pactl subscribe | while read -r event; do
|
|
if printf "%s\n" "${event}" | grep --quiet "source" || printf "%s\n" "${event}" | grep --quiet "server"; then
|
|
get_mic_status
|
|
fi
|
|
done
|
|
}
|
|
|
|
toggle() {
|
|
pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
|
}
|
|
|
|
case "$1" in
|
|
--toggle)
|
|
toggle
|
|
;;
|
|
*)
|
|
listen
|
|
;;
|
|
esac
|