I’m having an issue with the volume_brightness.sh script. I’m using i3wm and when I use my volume keys to adjust the volume, I’m not getting the notification from dunst that I usually do. However, the volume IS getting adjusted. I looked up the bindsym for the volume keys in ~/.config/i3/config and saw that it was using a script to display the volume changed using dunst. So, I ran the script in a terminal “~/.config/i3/scripts/volume_brightness.sh volume_up” and this was the output:
Use the button indicated below to format the script’s content properly for easier reading. Just select all of the content, then press the button or press CTRL+E instead.
#!/bin/bash
# original source: https://gitlab.com/Nmoleo/i3-volume-brightness-indicator
# taken from here: https://gitlab.com/Nmoleo/i3-volume-brightness-indicator
# See README.md for usage instructions
bar_color="#7f7fff"
volume_step=1
brightness_step=2.5
max_volume=100
# Uses regex to get volume from pactl
function get_volume {
pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '[0-9]{1,3}(?=%)' | head -1
}
# Uses regex to get mute status from pactl
function get_mute {
pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)'
}
# Uses regex to get brightness from xbacklight
function get_brightness {
xbacklight | grep -Po '[0-9]{1,3}' | head -n 1
}
# Returns a mute icon, a volume-low icon, or a volume-high icon, depending on the volume
function get_volume_icon {
volume=$(get_volume)
mute=$(get_mute)
if [ "$volume" -eq 0 ] || [ "$mute" == "yes" ] ; then
volume_icon=""
elif [ "$volume" -lt 50 ]; then
volume_icon=""
else
volume_icon=""
fi
}
# Always returns the same icon - I couldn't get the brightness-low icon to work with fontawesome
function get_brightness_icon {
brightness_icon=""
}
# Displays a volume notification using dunstify
function show_volume_notif {
volume=$(get_mute)
get_volume_icon
dunstify -i audio-volume-muted-blocking -t 1000 -r 2593 -u normal "$volume_icon $volume%" -h int:value:$volume -h string:hlcolor:$bar_color
}
# Displays a brightness notification using dunstify
function show_brightness_notif {
brightness=$(get_brightness)
get_brightness_icon
dunstify -t 1000 -r 2593 -u normal "$brightness_icon $brightness%" -h int:value:$brightness -h string:hlcolor:$bar_color
}
# Main function - Takes user input, "volume_up", "volume_down", "brightness_up", or "brightness_down"
case $1 in
volume_up)
# Unmutes and increases volume, then displays the notification
pactl set-sink-mute @DEFAULT_SINK@ 0
volume=$(get_volume)
if [ $(( "$volume" + "$volume_step" )) -gt $max_volume ]; then
pactl set-sink-volume @DEFAULT_SINK@ $max_volume%
else
pactl set-sink-volume @DEFAULT_SINK@ +$volume_step%
fi
show_volume_notif
;;
volume_down)
# Raises volume and displays the notification
pactl set-sink-volume @DEFAULT_SINK@ -$volume_step%
show_volume_notif
;;
volume_mute)
# Toggles mute and displays the notification
pactl set-sink-mute @DEFAULT_SINK@ toggle
show_volume_notif
;;
brightness_up)
# Increases brightness and displays the notification
xbacklight -inc $brightness_step -time 0
show_brightness_notif
;;
brightness_down)
# Decreases brightness and displays the notification
xbacklight -dec $brightness_step -time 0
show_brightness_notif
;;
esac
Thank you. That did work. This script was part of the default setup, though. Like, it was there as part of the fresh install I did when I first switched to Endeavour, and it did work for a long time. Should I file a bug report or something?
I do have one more question though. Using notify-send appears to add an extra volume icon. I see that there is a way to specify which icon to send with notify-send, is there a way to tell it not to send an icon at all? I’d prefer to just stick with the in-line icon since the script sets it dynamically by the volume level. Is there a way to tell notify-send not to include it’s icon? That would be more in line with how the notification appeared originally too.
I used the second one. I toyed around with it while I was waiting on a reply, though, and figured out that it would accept null as an argument for the -i option and just added that and it worked. Thank you though.