[PR #347] [MERGED] Add Pulse Audio Router to ensure correct sink is selected #420

Closed
opened 2026-10-15 13:00:26 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/wolf/pull/347
Author: @camelcx
Created: 2/4/2026
Status: ✅ Merged
Merged: 2/7/2026
Merged by: @ABeltramo

Base: stable ← Head: stable


📝 Commits (10+)

  • ef8cb37 Add hostname field to Container struct
  • 1433504 Add hostname extraction from JSON object
  • acb8adc Add DockerContainerCreated and DockerContainerStopped events
  • 51690bc Emit Docker container create and stop event
  • 8d1288a Add PulseAudioRouter class for audio routing
  • ab5facc Implement PulseAudioRouter for audio routing
  • 7f8a636 Integrate PulseAudio router in wolf.cpp
  • 7388229 Remove unnecessary code from pulse_router.cpp
  • 24c23b8 Add audio source files to CMake build
  • 17a8ae3 Refactor event bus method calls in docker.cpp

📊 Changes

14 files changed (+392 additions, -20 deletions)

View changed files

📝 src/core/src/core/audio.hpp (+7 -1)
📝 src/core/src/core/docker.hpp (+2 -1)
📝 src/core/src/platforms/all/docker/docker/json_formatters.hpp (+7 -1)
📝 src/core/src/platforms/linux/pulseaudio/pulse.cpp (+5 -1)
📝 src/moonlight-server/CMakeLists.txt (+2 -1)
➕ src/moonlight-server/audio/pulse_router.cpp (+241 -0)
➕ src/moonlight-server/audio/pulse_router.hpp (+60 -0)
📝 src/moonlight-server/events/events.hpp (+22 -4)
📝 src/moonlight-server/runners/docker.cpp (+23 -1)
📝 src/moonlight-server/sessions/common.cpp (+3 -2)
➕ src/moonlight-server/sessions/common.hpp (+6 -0)
📝 src/moonlight-server/sessions/lobbies.cpp (+4 -3)
📝 src/moonlight-server/sessions/moonlight.cpp (+5 -4)
📝 src/moonlight-server/wolf.cpp (+5 -1)

📄 Description

Implemented a pulse router to ensure correct sound input -> pulse sink routing. Some APPs ignore the $PULSE_SINK env and choose the wrong sink to output sound breaking multiuser isolation.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/wolf/pull/347 **Author:** [@camelcx](https://github.com/camelcx) **Created:** 2/4/2026 **Status:** ✅ Merged **Merged:** 2/7/2026 **Merged by:** [@ABeltramo](https://github.com/ABeltramo) **Base:** `stable` ← **Head:** `stable` --- ### 📝 Commits (10+) - [`ef8cb37`](https://github.com/games-on-whales/wolf/commit/ef8cb37986e7a5c29580a238a54bed30352ad8e2) Add hostname field to Container struct - [`1433504`](https://github.com/games-on-whales/wolf/commit/1433504fc9987f93b49123ab0e10b19d3fa14acc) Add hostname extraction from JSON object - [`acb8adc`](https://github.com/games-on-whales/wolf/commit/acb8adcc498baa4ef8de60b87a0bf95868b0ec2d) Add DockerContainerCreated and DockerContainerStopped events - [`51690bc`](https://github.com/games-on-whales/wolf/commit/51690bc503466243145f95d56db29b6c01af4d2d) Emit Docker container create and stop event - [`8d1288a`](https://github.com/games-on-whales/wolf/commit/8d1288a3ccc6a6aa3f474fe9bbba4eade36a87a9) Add PulseAudioRouter class for audio routing - [`ab5facc`](https://github.com/games-on-whales/wolf/commit/ab5facca566affa81e9380da613943815affa37d) Implement PulseAudioRouter for audio routing - [`7f8a636`](https://github.com/games-on-whales/wolf/commit/7f8a63633d3d0166a2cf64e1414b99153b7af3af) Integrate PulseAudio router in wolf.cpp - [`7388229`](https://github.com/games-on-whales/wolf/commit/7388229f84c5305ea5dad0d82e2f80b6729d7cc2) Remove unnecessary code from pulse_router.cpp - [`24c23b8`](https://github.com/games-on-whales/wolf/commit/24c23b884c30837ce7eba17bae9ea76554697301) Add audio source files to CMake build - [`17a8ae3`](https://github.com/games-on-whales/wolf/commit/17a8ae366eef7a738779e537b1f4fa25f63a41d9) Refactor event bus method calls in docker.cpp ### 📊 Changes **14 files changed** (+392 additions, -20 deletions) <details> <summary>View changed files</summary> 📝 `src/core/src/core/audio.hpp` (+7 -1) 📝 `src/core/src/core/docker.hpp` (+2 -1) 📝 `src/core/src/platforms/all/docker/docker/json_formatters.hpp` (+7 -1) 📝 `src/core/src/platforms/linux/pulseaudio/pulse.cpp` (+5 -1) 📝 `src/moonlight-server/CMakeLists.txt` (+2 -1) ➕ `src/moonlight-server/audio/pulse_router.cpp` (+241 -0) ➕ `src/moonlight-server/audio/pulse_router.hpp` (+60 -0) 📝 `src/moonlight-server/events/events.hpp` (+22 -4) 📝 `src/moonlight-server/runners/docker.cpp` (+23 -1) 📝 `src/moonlight-server/sessions/common.cpp` (+3 -2) ➕ `src/moonlight-server/sessions/common.hpp` (+6 -0) 📝 `src/moonlight-server/sessions/lobbies.cpp` (+4 -3) 📝 `src/moonlight-server/sessions/moonlight.cpp` (+5 -4) 📝 `src/moonlight-server/wolf.cpp` (+5 -1) </details> ### 📄 Description Implemented a pulse router to ensure correct sound input -> pulse sink routing. Some APPs ignore the $PULSE_SINK env and choose the wrong sink to output sound breaking multiuser isolation. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 13:00:26 +00:00
Sign in to join this conversation.
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
games-on-whales/wolf#420
No description provided.