Skip to content

Move only application streams when switching the audio input - #12175

Open
HazAT wants to merge 1 commit into
omacom:quattrofrom
HazAT:fix/audio-input-move-app-streams-only
Open

HazAT wants to merge 1 commit into
omacom:quattrofrom
HazAT:fix/audio-input-move-app-streams-only

Conversation

@HazAT

@HazAT HazAT commented Sep 16, 2026

Copy link
Copy Markdown

omarchy-audio-input-set-default moves every source output to the newly selected source. A DSP filter chain's own capture stream is a source output too, and it carries no application.name. Retargeting it points the chain's input at the chain's own output. WirePlumber cannot honour that (find-defined-target.lua answers "defined target not found" and destroys the node), so the whole chain unloads without a log line.

On Apple Silicon that chain is the asahi-audio microphone beamformer: choosing "MacBook Air J413 Microphone" in the audio panel makes the internal microphone disappear until WirePlumber is restarted (the state described in omacom#431). EasyEffects' input stream is exposed the same way.

Apply the guard omarchy-audio-output-set-default gained in aa9f0c5: move only source outputs that carry an application.name, and leave EasyEffects alone.

Verified on a MacBook Air J413 (Omarchy Mac 4.0.2, wireplumber 0.5.17): the shipped helper destroys the chain on every run; with this change the chain stays up across repeated runs and its capture stream remains on RawMics. A pw-record stream, which has application.name, is still selected for moving. test/cli passes; the test/shell failures on this machine are the same on untouched quattro (they need an omarchy-pkgs checkout).

Filed by Claude Fable 5.1 via Claude Code.

omarchy-audio-input-set-default moved every source output to the newly
selected source. A DSP filter chain's own capture stream is a source output
too, and it carries no application.name. Retargeting it points the chain's
input at the chain's own output. WirePlumber cannot honour that
(find-defined-target.lua answers "defined target not found" and destroys the
node), so the whole chain unloads without a log line.

On Apple Silicon that chain is the asahi-audio microphone beamformer:
choosing "MacBook Air J413 Microphone" in the audio panel made the internal
microphone disappear until WirePlumber was restarted. EasyEffects' input
stream is exposed the same way.

Apply the guard omarchy-audio-output-set-default gained in aa9f0c5: move
only source outputs that carry an application.name, and leave EasyEffects
alone.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant