Set up PipeWire audio and media key bindings #1

Closed
opened 2026-06-06 12:38:03 +00:00 by ldraney · 0 comments
Owner

Type

Feature

Lineage

Standalone — discovered during Hyprland session when no audio output was available for Vivaldi/Crunchyroll.

Repo

ldraney/hyprland-config

User Story

As a Hyprland user
I want working audio with volume/media keyboard controls
So that I can watch content and control volume without leaving my workflow

Context

PipeWire was running but missing the essential companion packages (pipewire-pulse, wireplumber, pipewire-alsa). Without these, browsers and Proton/Wine games have no audio server to route through. Games launched before pipewire-pulse was installed grabbed ALSA devices directly, blocking PipeWire from managing the Intel PCH sound card. No volume or media keybindings existed in the Hyprland config.

File Targets

Files the agent should modify or create:

  • hyprland.lua -- add volume/media keybindings, pin monitor config, enable direct scanout
  • docs/audio-setup.md -- new doc covering audio stack, hardware, troubleshooting
  • docs/architecture.md -- add PipeWire to component tree

Acceptance Criteria

  • PipeWire audio stack functional (pipewire-pulse + wireplumber + pipewire-alsa)
  • Volume up/down/mute keyboard media keys work via wpctl
  • Media play/pause/next/prev keys work via playerctl
  • Both Intel PCH and NVIDIA HDMI sinks visible in wpctl status
  • Audio setup documented

Test Expectations

  • Manual test: volume keys change sink volume
  • Manual test: wpctl status shows both audio devices
  • Run command: N/A — config-only changes

Constraints

  • Use wpctl (ships with wireplumber) instead of pamixer to avoid extra dependency
  • Volume capped at 100% (-l 1.0) to prevent over-amplification
  • Keybinds use locked = true so they work on lock screen

Checklist

  • PR opened
  • No unrelated changes
  • Standalone hyprland-config project
### Type Feature ### Lineage Standalone — discovered during Hyprland session when no audio output was available for Vivaldi/Crunchyroll. ### Repo `ldraney/hyprland-config` ### User Story As a Hyprland user I want working audio with volume/media keyboard controls So that I can watch content and control volume without leaving my workflow ### Context PipeWire was running but missing the essential companion packages (pipewire-pulse, wireplumber, pipewire-alsa). Without these, browsers and Proton/Wine games have no audio server to route through. Games launched before pipewire-pulse was installed grabbed ALSA devices directly, blocking PipeWire from managing the Intel PCH sound card. No volume or media keybindings existed in the Hyprland config. ### File Targets Files the agent should modify or create: - `hyprland.lua` -- add volume/media keybindings, pin monitor config, enable direct scanout - `docs/audio-setup.md` -- new doc covering audio stack, hardware, troubleshooting - `docs/architecture.md` -- add PipeWire to component tree ### Acceptance Criteria - [x] PipeWire audio stack functional (pipewire-pulse + wireplumber + pipewire-alsa) - [x] Volume up/down/mute keyboard media keys work via wpctl - [x] Media play/pause/next/prev keys work via playerctl - [x] Both Intel PCH and NVIDIA HDMI sinks visible in wpctl status - [x] Audio setup documented ### Test Expectations - [x] Manual test: volume keys change sink volume - [x] Manual test: `wpctl status` shows both audio devices - Run command: N/A — config-only changes ### Constraints - Use `wpctl` (ships with wireplumber) instead of `pamixer` to avoid extra dependency - Volume capped at 100% (`-l 1.0`) to prevent over-amplification - Keybinds use `locked = true` so they work on lock screen ### Checklist - [x] PR opened - [ ] No unrelated changes ### Related - Standalone hyprland-config project
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/hyprland-config#1
No description provided.