Skip to content

Fix Linux session finder to fall back to PulseAudio client properties#164

Open
dewald-L wants to merge 1 commit into
omriharel:masterfrom
dewald-L:fix/linux-session-finder-client-fallback
Open

Fix Linux session finder to fall back to PulseAudio client properties#164
dewald-L wants to merge 1 commit into
omriharel:masterfrom
dewald-L:fix/linux-session-finder-client-fallback

Conversation

@dewald-L

Copy link
Copy Markdown

Description

On Linux, some apps connect to PipeWire via its native protocol rather than through the PulseAudio compatibility layer (pipewire-pulse). In this case, neither application.process.binary nor application.name is present on the sink-input's own property list — they are only available on the associated PulseAudio client object.

The most common example is Spotify (version 1.2.x+), which shows up in pactl list sink-inputs with only node.name = "audio-src" and no application identity, causing the persistent warning:

Failed to get sink input's process name  {"sinkInputIndex": N}

Solution

This adds a two-level fallback in enumerateAndAddSessions:

  1. Try application.name on the sink-input proplist (covers apps like Firefox running ALSA over PipeWire — also addressed in Handle apps without a binary name in session finder #161)
  2. Look up the associated client via GetClientInfo and check both application.process.binary and application.name there (covers Spotify and other native PipeWire clients)

Testing

Verified on CachyOS (Arch-based) with PipeWire 1.6.4, WirePlumber 0.5.14, and Spotify 1.2.86.502 (AUR). Before this fix, Spotify was silently ignored and the slider had no effect. After this fix, Spotify is correctly identified and volume control works.

Relation to existing PRs

PR #161 adds the application.name sink-input fallback but does not handle the case where both properties are absent from the sink-input entirely (native PipeWire clients). This PR is a superset of that fix.

Some apps (e.g. Spotify) connect to PipeWire via its native protocol rather
than through the PulseAudio compatibility layer. In this case, neither
application.process.binary nor application.name is present on the sink-input's
own property list — they are only available on the associated PulseAudio client
object.

This adds a two-level fallback:
1. Try application.name on the sink-input proplist (covers apps like Firefox
   running ALSA over PipeWire, as noted in PR omriharel#161)
2. Look up the associated client via GetClientInfo and check both
   application.process.binary and application.name there (covers Spotify and
   other native PipeWire clients)
raxbg added a commit to raxbg/deej that referenced this pull request Jun 2, 2026
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