1
0
Fork 0
NixOS/hosts/totsugeki/home-manager/scripts/volumectl.nix
2024-09-05 21:01:29 +02:00

65 lines
2.4 KiB
Nix

{ pkgs }:
pkgs.writeShellApplication {
name = "volumectl";
runtimeInputs = with pkgs; [ dunst pamixer ];
text = ''
VOLUME_REGEX="^(-*|\+*)[0-9]+$"
volume=""
if [ "$1" == "output" ]; then
if [[ "$2" =~ $VOLUME_REGEX ]]; then
if [ "$(pamixer --get-mute)" == "true" ]; then
pamixer --unmute > /dev/null
fi
if [ "''${2:0:1}" == "-" ]; then
pamixer --allow-boost -d "''${2:1}" > /dev/null
elif [ "''${2:0:1}" == "+" ]; then
pamixer --allow-boost -i "''${2:1}" > /dev/null
fi
volume="$(pamixer --get-volume-human)"
message=" $volume"
elif [ "$2" == "toggle-mute" ]; then
if [ "$(pamixer --get-mute)" == "true" ]; then
pamixer --unmute > /dev/null
volume="$(pamixer --get-volume-human)"
message=" $volume"
else
pamixer --mute > /dev/null
message="󰖁 Silenciado"
fi
else
message="volumectl error: Unknown second argument"
fi
elif [ "$1" == "input" ]; then
if [[ "$2" =~ $VOLUME_REGEX ]]; then
if [ "$(pamixer --default-source --get-mute)" == "true" ]; then
pamixer --default-source --unmute > /dev/null
fi
if [ "''${2:0:1}" == "-" ];then
pamixer --default-source --allow-boost -d "''${2:1}" > /dev/null
elif [ "''${2:0:1}" == "+" ]; then
pamixer --default-source --allow-boost -i "''${2:1}" > /dev/null
fi
volume="$(pamixer --default-source --get-volume-human)"
message=" $volume"
elif [ "$2" == "toggle-mute" ]; then
if [ "$(pamixer --default-source --get-mute)" == "true" ]; then
pamixer --default-source --unmute > /dev/null
volume="$(pamixer --default-source --get-volume-human)"
message=" $volume"
else
pamixer --default-source --mute > /dev/null
message=" Silenciado"
fi
else
message="volumectl error: Unknown second argument"
fi
else
message="volumectl error: Unknown first argument"
fi
volume="$(echo "$volume" | tr -d "%")"
dunstify --appname "volumectl" --replace 9001 --urgency low --timeout 1250 --hints "int:value:$volume" "$message"
'';
}