Add PipeWire audio stack, volume keybinds, and monitor config #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "audio-setup-and-monitor-config"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Changes
hyprland.lua: Add XF86Audio volume/mute keybinds (wpctl), media playback keybinds (playerctl), pin monitor config, enable direct scanoutdocs/audio-setup.md: New doc covering PipeWire stack, hardware (Intel PCH + NVIDIA HDMI), keybindings, and troubleshootingdocs/architecture.md: Add PipeWire to component treeTest Plan
wpctl statusshows both Intel PCH and NVIDIA sinksReview Checklist
Related Notes
PR #2 Review
DOMAIN REVIEW
Tech stack: Hyprland 0.55+ Lua config, PipeWire/WirePlumber audio, Arch Linux, NVIDIA.
hyprland.lua -- Keybindings (correct)
hl.bindcalls for XF86Audio keys use the correct Hyprland Lua API pattern:hl.bind(key, hl.dsp.exec_cmd(cmd), opts_table).repeating = trueon volume up/down is correct -- allows holding the key for continuous adjustment. Correctly omitted on mute toggle.locked = trueon all audio/media binds is correct -- these should work on the lock screen.wpctl set-volume -l 1.0caps volume at 100%, preventing over-amplification. Good practice.5%-) does NOT have-l 1.0-- this is fine; capping is only needed on raise.playerctlcommands (play-pause,next,previous) are all correct subcommands.hyprland.lua -- Monitor config
output = "DP-2"with explicit mode andtransform = 1(90-degree rotation, portrait/vertical) is valid Hyprland Lua API.scale = 1at 2560x1440 in portrait is reasonable for a 32" display.hyprland.lua -- Direct scanout
render = { direct_scanout = true }is valid. Placed in a separatehl.config()block, which works fine (Hyprland merges config blocks). Could be merged into an existinghl.config()call but this is purely stylistic.docs/audio-setup.md
hyprland.luacommands exactly -- no documentation drift.pipewire-alsaappears in the doc's stack diagram but is not indocs/architecture.md's component tree. Minor inconsistency -- the architecture tree showspipewire-pulseandwireplumberbut omitspipewire-alsa. This is a nit, not a blocker.docs/architecture.md
BLOCKERS
None. No secrets, no credentials, no unvalidated user input, no security concerns. This is a dotfile config repo -- no auth paths, no DRY violations applicable.
NITS
Stale monitor description in architecture.md and README.md: The PR changes the monitor from auto-detect
scale=2toDP-2at2560x1440@60vertical withscale=1, anddocs/audio-setup.mdreferences a "Samsung S32D850" monitor. However:docs/architecture.mdline 1 still says "single GPU driving a 4K LG UltraFine at 2x scale (effective 1080p)" -- this is now outdated.README.mdline 6 says "4K, 2x scale" and line 33 says "Monitor: 4K at 2x scale" -- also outdated.These are pre-existing inaccuracies that should be cleaned up in a follow-up, but they are not introduced by this PR (the PR just makes the discrepancy more visible). Non-blocking.
Separate
hl.config()block for render: Thedirect_scanoutconfig could be merged into the existing decoration or generalhl.config()call to reduce visual noise. Purely stylistic -- Hyprland merges them correctly either way.Missing
-l 1.0on volume down: The volume-down bind does not cap with-l 1.0. This is technically correct (you cannot go below 0% with5%-), but for symmetry and to guard against future edits that might change the step to an absolute value, some prefer capping both directions. Non-blocking.README.md not updated with audio/media keybindings: The README has a comprehensive Hotkeys section but does not include the new Volume or Media playback keybindings. Worth adding for completeness in a follow-up.
README.md Files section does not list
docs/audio-setup.md: The new doc is not referenced in the README's Files or Docs sections.SOP COMPLIANCE
audio-setup-and-monitor-config-- no issue number prefix. This is a standalone personal config repo without the{issue-number}-{kebab-case}convention enforced, and the branch name is descriptive. Acceptable for this repo.Closes #1-- correct linkage to parent issue.PROCESS OBSERVATIONS
docs/audio-setup.mdalongside the config changes. The stale monitor references in architecture.md and README.md should be cleaned up as a follow-up.VERDICT: APPROVED
Clean, correct PR. Hyprland Lua API usage is accurate, keybindings follow best practices (locked, repeating, volume cap), documentation matches the code, and no secrets or security concerns. The stale monitor references in architecture.md and README.md are pre-existing and non-blocking -- recommend a quick follow-up to sync those.