Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
allddd committed Nov 4, 2023
1 parent f441cbd commit e8e3ac0
Showing 1 changed file with 16 additions and 27 deletions.
43 changes: 16 additions & 27 deletions polybar-scripts/pipewire-microphone/pipewire-microphone.sh
Original file line number Diff line number Diff line change
@@ -1,52 +1,41 @@
#!/bin/sh

get_mic_default() {
pw-cat --record --list-targets | sed -n -E "1 s/^.*: (.*)/\1/p"
_get_mic_default() {
pactl info | awk '/Default Source:/ {print $3}'
}

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;
}
}'
_is_mic_muted() {
pactl get-source-mute "$(_get_mic_default)" | awk '{print $2}'
}

get_mic_status() {
is_muted="$(is_mic_muted)"

if [ "${is_muted}" = "yes" ]; then
_get_mic_status() {
if [ "$(_is_mic_muted)" = "yes" ]; then
printf "%s\n" "#1"
else
printf "%s\n" "#2"
fi
}

listen() {
get_mic_status

_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
if printf "%s\n" "${event}" | grep -qE '(source|server)'; then
_get_mic_status
fi
done
}

toggle() {
_toggle() {
pactl set-source-mute @DEFAULT_SOURCE@ toggle
}

case "$1" in
case "${1}" in
--toggle)
toggle
_toggle
;;
*)
listen
_listen
;;
esac

# vim: ts=4 sw=4 et:

0 comments on commit e8e3ac0

Please sign in to comment.