65 lines
2.4 KiB
Nix
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"
|
|
'';
|
|
}
|