72 lines
1.3 KiB
Bash
Executable file
72 lines
1.3 KiB
Bash
Executable file
#!/bin/env zsh
|
|
|
|
volume() {
|
|
pactl get-sink-volume @DEFAULT_SINK@ | rg 'Volume: front-left:\s+\d+\s+/\s+(\d+)%' -or '$1' --color=never
|
|
}
|
|
|
|
mute() {
|
|
if [[ "$(pactl get-sink-mute @DEFAULT_SINK@)" =~ 'yes' ]]; then
|
|
echo "true"
|
|
else
|
|
echo "false"
|
|
fi
|
|
}
|
|
|
|
get_device_id() {
|
|
~/.config/eww/scripts/get-audio-device-id "$1"
|
|
}
|
|
|
|
HEADPHONES=""
|
|
HEADPHONES_ICON=''
|
|
SPEAKERS=""
|
|
SPEAKERS_ICON=''
|
|
HEADPHONE_MIC=""
|
|
HEADPHONE_MIC_ICON=''
|
|
BLUE_MIC=""
|
|
BLUE_MIC_ICON=''
|
|
UNKNOWN_ICON='?'
|
|
|
|
get_ids() {
|
|
HEADPHONES="$(get_device_id 'headphones')"
|
|
SPEAKERS="$(get_device_id 'speakers')"
|
|
HEADPHONE_MIC="$(get_device_id 'headphone_mic')"
|
|
BLUE_MIC="$(get_device_id 'blue_mic')"
|
|
}
|
|
|
|
audio_sink() {
|
|
case "$(pactl get-default-sink)" in
|
|
"$HEADPHONES") echo "$HEADPHONES_ICON"
|
|
;;
|
|
"$SPEAKERS") echo "$SPEAKERS_ICON"
|
|
;;
|
|
*) echo "$UNKNOWN_ICON"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
audio_source() {
|
|
case "$(pactl get-default-source)" in
|
|
"$HEADPHONE_MIC") echo "$HEADPHONE_MIC_ICON"
|
|
;;
|
|
"$BLUE_MIC") echo "$BLUE_MIC_ICON"
|
|
;;
|
|
*) echo "$UNKNOWN_ICON"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
audio() {
|
|
echo "{\"volume\":$(volume),\"muted\":$(mute),\"sink\":\"$(audio_sink)\",\"source\":\"$(audio_source)\"}"
|
|
}
|
|
|
|
get_ids
|
|
audio
|
|
sleep 3
|
|
get_ids
|
|
audio
|
|
pactl subscribe | while read -r LINE; do
|
|
if [[ "$LINE" =~ 'change' ]]; then
|
|
audio
|
|
get_ids
|
|
fi
|
|
done
|