diff options
Diffstat (limited to 'swaywm/local/bin/volume')
-rwxr-xr-x | swaywm/local/bin/volume | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/swaywm/local/bin/volume b/swaywm/local/bin/volume new file mode 100755 index 0000000..eb662b4 --- /dev/null +++ b/swaywm/local/bin/volume @@ -0,0 +1,78 @@ +#!/bin/bash + +function get_volume { + pactl get-sink-volume @DEFAULT_SINK@ | awk '/Volume:/ {print $5}' | cut -d '/' -f 1 | sed 's/%//g' +} + +function is_mute { + #amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null + pactl list sinks | grep -A 10 'State: ' | grep -q 'Mute: yes' +} + +function is_mic_mute { + pactl list sources | grep -A 10 'State: ' | grep -q 'Mute: yes' +} + +function get_icon { + volume=$(get_volume) + if is_mute; then + echo "audio-volume-muted-symbolic" + elif (( volume <= 39 )); then + echo "audio-volume-low-symbolic" + elif (( volume <= 74 )); then + echo "audio-volume-medium-symbolic" + elif (( volume <= 100 )); then + echo "audio-volume-high-symbolic" + else + echo "audio-volume-overamplified-symbolic" + fi +} + +function send_notification { + volume=$(get_volume) + icon=$(get_icon) + # Make the bar with the special character ─ (it's not dash -) + # https://en.wikipedia.org/wiki/Box-drawing_character + bar=$(seq -s "─" $(($volume / 5)) | sed 's/[0-9]//g') + # Send the notification + dunstify -i "$icon" -t 2500 -r 2593 -u normal " $bar" +} + +case $1 in + up) + # Set the volume on (if it was muted) + #amixer -D pulse set Master on > /dev/null + # Up the volume (+ 5%) + # amixer -D pu lse sset Master 5%+ > /dev/null + volume=$(get_volume) + if [[ $volume -le 99 ]]; then + pactl set-sink-volume @DEFAULT_SINK@ +5% + else + pactl set-sink-volume @DEFAULT_SINK@ 100% + fi + send_notification + ;; + down) + # amixer -D pulse set Master on > /dev/null + # amixer -D pulse sset Master 5%- > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ -5% + send_notification + ;; + mute) + # Toggle mute + pactl set-sink-mute @DEFAULT_SINK@ toggle + if is_mute ; then + dunstify -i audio-volume-muted -t 2500 -r 2593 -u normal "Mute" + else + send_notification + fi + ;; + mute-mic) + pactl set-source-mute @DEFAULT_SOURCE@ toggle + if is_mic_mute ; then + dunstify -i microphone-sensitivity-muted-symbolic -t 2500 -r 2593 -u normal "Microphone Muted" + else + dunstify -i microphone-sensitivity-high-symbolic -t 2500 -r 2593 -u normal "Microphone Unmuted" + fi + ;; +esac |