feat(waybar): right-click volume opens a floating pwvucontrol mixer
All checks were successful
Check / eval (push) Successful in 2m55s

Right-clicking the Waybar volume module now opens pwvucontrol (per-app
mixer); left-click still mutes. Adds:

- on-click-right in waybar.nix + all four whole-swap jsoncs (parity)
- hyprland.nix: the config's first windowrule block — float + center the
  mixer (pwvucontrol, with pavucontrol as a fallback class); normal-
  priority list so a downstream windowrule concatenates
- pwvucontrol in the template home.packages

pwvucontrol is PipeWire-native + GTK4/libadwaita, so it themes via the
portal color-scheme like Amberol. app-id verified from the built package.
This settles the windowrule pattern/placement; item 41 is now just
broadening the float set. Right-click→float→center is a V3 session check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 22:31:00 +01:00
parent 239c3c4551
commit 28a28e05d3
10 changed files with 53 additions and 24 deletions

View File

@@ -438,6 +438,18 @@ in
background_color = rgb c.base;
};
# Window rules. This is the config's first float rule; item 41 will
# broaden the set (dialogs, portals, …) once that audit lands. For
# now: the audio mixer opened by right-clicking the Waybar volume
# module (item 35) floats + centers instead of tiling. Matches
# pwvucontrol (the template's mixer) and pavucontrol if swapped in.
# Normal-priority list like `bind`/`exec-once` below, so a downstream
# `windowrule = [...]` concatenates rather than replaces.
windowrule = [
"float, class:^(com\\.saivert\\.pwvucontrol|org\\.pulseaudio\\.pavucontrol|pavucontrol)$"
"center, class:^(com\\.saivert\\.pwvucontrol|org\\.pulseaudio\\.pavucontrol|pavucontrol)$"
];
# Rendered from ./keybinds.nix (the cheatsheet reads the same list),
# plus the generated per-workspace binds. Like exec-once above this
# stays a normal-priority list, so a downstream `bind = [...]`

View File

@@ -172,6 +172,10 @@ let
format-muted = "󰝟";
format-icons.default = [ "󰕿" "󰖀" "󰕾" ];
on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
# Right-click → the full mixer (per-app volumes) in a floating window
# (item 35). pwvucontrol ships in the template suite; the Hyprland
# windowrule floats it. Keep in sync with the whole-swap jsoncs.
on-click-right = "pwvucontrol";
};
# Idle inhibitor (caffeine): click 󰾪 → 󰅶 to hold the screen awake —