dot(niri): wpctl with notification

This commit is contained in:
js0ny 2026-03-15 21:43:13 +00:00
parent 1b5c26bc04
commit f740b78081
4 changed files with 158 additions and 91 deletions

View file

@ -61,16 +61,19 @@ in {
# spawn-sh "cliphist list | ${launcher} -dmenu | cliphist decode | wl-copy";
spawn "${launcher}" "-m" "clipboard";
# See ../volume-notify.nix
"XF86AudioRaiseVolume".allow-when-locked = true;
"XF86AudioRaiseVolume".action =
spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+";
spawn "volume-notify" "up";
"XF86AudioLowerVolume".allow-when-locked = true;
"XF86AudioLowerVolume".action =
spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-";
spawn "volume-notify" "down";
"XF86AudioMute".allow-when-locked = true;
"XF86AudioMute".action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
"XF86AudioMute".action =
spawn "volume-notify" "mute";
"XF86AudioMicMute".allow-when-locked = true;
"XF86AudioMicMute".action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
"XF86AudioMicMute".action =
spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
"XF86MonBrightnessUp" = {
action = spawn "brightnessctl" "set" "10%+";

View file

@ -48,6 +48,7 @@ in {
./sunsetr.nix
./systemd.nix
./dunst.nix
./volume-notify.nix
];
home.packages = with pkgs; [
swayidle # Screensaver

View file

@ -0,0 +1,46 @@
{pkgs, ...}: let
volume-notify = pkgs.writeShellApplication {
name = "volume-notify";
runtimeInputs = with pkgs; [
wireplumber
gawk
gnugrep
libnotify
];
text = ''
if [ $# -eq 0 ]; then
echo "Usage: volume-notify {up|down|mute}"
exit 1
fi
case "$1" in
up)
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+
;;
down)
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-
;;
mute)
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
;;
*)
echo "Invalid argument: $1"
exit 1
;;
esac
if wpctl get-volume @DEFAULT_AUDIO_SINK@ | grep -q 'MUTED'; then
TEXT="Volume: Muted"
else
VOLUME=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print $2 * 100}')
TEXT="Volume: ''${VOLUME}%"
fi
notify-send -h string:x-canonical-private-synchronous:volume -t 1500 "🔊 Audio" "$TEXT"
'';
};
in {
home.packages = [volume-notify];
}