This repository has been archived on 2023-08-08. You can view files and clone it, but cannot push or open issues or pull requests.
nil/pkgs/volume.nix

46 lines
1.4 KiB
Nix

{ pkgs, ... }:
let
in pkgs.writeShellScriptBin "volume.sh" ''
#! ${pkgs.bash}/bin/bash
function get_volume {
amixer get Master | grep '%' | head -n 1 | cut -d '[' -f 2 | cut -d '%' -f 1
}
function is_mute {
amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null
}
function notify {
vol=$(get_volume)
str="$vol $(seq -s "" "$(($vol / 5 ))" | sed 's/[0-9]//g' )"
if is_mute ; then
icon=/etc/profiles/per-user/james/share/icons/kora/actions/16/audio-volume-muted.svg
else
if (( "$vol" == "0" )) ; then
icon=/etc/profiles/per-user/james/share/icons/kora/actions/16/audio-volume-off.svg
elif (( "$vol" < "30" )) ; then
icon=/etc/profiles/per-user/james/share/icons/kora/actions/16/audio-volume-low.svg
elif (( "$vol" < "60" )) ; then
icon=/etc/profiles/per-user/james/share/icons/kora/actions/16/audio-volume-medium.svg
else
icon=/etc/profiles/per-user/james/share/icons/kora/actions/16/audio-volume-high.svg
fi
fi
echo "$str"
notify-send "$str" -h string:x-canonical-private-synchronous:volume -i $icon -t 1500
}
case $1 in
up)
pactl set-sink-volume @DEFAULT_SINK@ +5% ; notify ;;
down)
pactl set-sink-volume @DEFAULT_SINK@ -5% ; notify ;;
mute)
amixer set Master toggle > /dev/null ; notify ;;
*)
echo "invalid command"
;;
esac
$(is_mute) ; echo $?
''