Skip to content

Match Flatpak app identities and repair dock reconnects - #9

Open
gabrielbaez wants to merge 1 commit into
2c2t-dev:mainfrom
gabrielbaez:fix/flatpak-routing-and-reconnect
Open

gabrielbaez wants to merge 1 commit into
2c2t-dev:mainfrom
gabrielbaez:fix/flatpak-routing-and-reconnect

Conversation

@gabrielbaez

@gabrielbaez gabrielbaez commented Nov 8, 2026 •

Copy link
Copy Markdown

What changes, and why

Flatpak applications selected from the installed-app list can keep playing on the default channel because the saved desktop ID (for example, com.spotify.Client or com.microsoft.Edge) differs from the stream's name or executable. Read the portal identity from the PipeWire client, including information arriving after playback starts, and retain executable/name aliases for existing assignments.

Use those aliases consistently for assignment removal, playing status, picker deduplication, and focused-app matching. Removing a legacy alias or its channel preserves any remaining canonical assignment. OpenDeck's “In front” action can still match msedge when the host window PID cannot be related to the sandbox stream PID.

When a dock disappears, some PipeWire versions leave its loopback modules alive. Queue device removals and retire affected loopbacks on the engine tick, then restore them when the device returns. This also handles a replacement appearing under the same name before the next tick.

Checked

  • cargo fmt --all, cargo clippy --workspace --all-targets -- -D warnings, and cargo test --workspace pass (180 unit tests).
  • cargo run -p pipedeck-engine --example smoke passes all 98 checks against an isolated PipeWire 1.4.11 server, including client-only Flatpak identity, focus aliases, both alias-release orders, dock absence, and rapid same-name replugging.
  • Explicit GTK regression passes for playing status and picker updates when aliases arrive without a canonical-key change; included in CI.
  • README and changelog describe the behavior.

This branch starts directly from upstream main (6864b2f). It is independent of the master-control UI changes in #10; the two branches merge without conflicts.

This branch has not been deployed

No deployments
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