mirror of
https://github.com/Horhik/dotfiles.git
synced 2024-11-27 10:31:30 +00:00
67 lines
1.1 KiB
Bash
67 lines
1.1 KiB
Bash
#!/bin/sh
|
|
|
|
update_sink() {
|
|
sink=$(pacmd list-sinks | sed -n '/\* index:/ s/.*: //p')
|
|
}
|
|
|
|
volume_up() {
|
|
update_sink
|
|
pactl set-sink-volume "$sink" +1%
|
|
}
|
|
|
|
volume_down() {
|
|
update_sink
|
|
pactl set-sink-volume "$sink" -1%
|
|
}
|
|
|
|
volume_mute() {
|
|
update_sink
|
|
pactl set-sink-mute "$sink" toggle
|
|
}
|
|
|
|
volume_print() {
|
|
update_sink
|
|
|
|
active_port=$(pacmd list-sinks | sed -n "/index: $sink/,/index:/p" | grep active)
|
|
if echo "$active_port" | grep -q speaker; then
|
|
icon="#1"
|
|
elif echo "$active_port" | grep -q headphones; then
|
|
icon="#2"
|
|
else
|
|
icon="#3"
|
|
fi
|
|
|
|
muted=$(pamixer --sink "$sink" --get-mute)
|
|
|
|
if [ "$muted" = true ]; then
|
|
echo "$icon --"
|
|
else
|
|
echo "$icon $(pamixer --sink "$sink" --get-volume)"
|
|
fi
|
|
}
|
|
|
|
listen() {
|
|
volume_print
|
|
|
|
pactl subscribe | while read -r event; do
|
|
if echo "$event" | grep -qv "Client"; then
|
|
volume_print
|
|
fi
|
|
done
|
|
}
|
|
|
|
case "$1" in
|
|
--up)
|
|
volume_up
|
|
;;
|
|
--down)
|
|
volume_down
|
|
;;
|
|
--mute)
|
|
volume_mute
|
|
;;
|
|
*)
|
|
listen
|
|
;;
|
|
esac
|