XF86Audio binds are executing twice

Hyprland version
Hyprland 0.51.1 built from branch  at commit 71a1216abcc7031776630a6d88f105605c4dc1c9  ([gha] Nix: update inputs).
Date: Mon Sep 22 20:54:03 2025
Tag: v0.51.1, commits: 6436
built against:
 aquamarine 0.9.5
 hyprlang 0.6.3
 hyprutils 0.10.0
 hyprcursor 0.1.13
 hyprgraphics 0.2.0


no flags were set

Describe your issue / feature…

When I tried to mute my audio for some reason it was behaving strangely and I noticed that these binds to some XF86Audio buttons executes twice.

bindle =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+
bindle =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-
bindl =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle

When I comment these lines nothing happens on button press.

Adding “r“ flag makes it execute twice on button press and once on release.

I haven’t noticed problems with other bindings like XF86AudioMicMute or XF86MonBrightnessUp.

When I removed binds from config and checked xev I haven’t noticed problems with these keys (one KeyPress and one KeyRelease).

Am I doing something wrong?

Try

bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 2%+

bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-

bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle

Still same behavior, I guess the problem is not in the command because when I change it to notify-send a it sends notification twice

Check wev, not xev.

Also, if you have them bound, they should NOT show up in wev, as they would be eaten by Hyprland. Are you running an IME?

I checked wev and it shows same result.
If they are not bound it shows one press and one release, if they are bound it shows nothing when I press keys.
I dont have IME.
I checked these keys on KDE Plasma and they worked properly.

then I have genuinely no clue what’s up. Maybe you duplicated them in your config? No clue. You seem to be the only one affected…

1 Like

I wish they were duplicated in config but removing one line with bind and reloading unbounds it.
For some reason I have this problem only on my laptop ; - ;