Skip to content

Add Audio Output Switcher to Plugin Store - #1103

Open
zomars wants to merge 2 commits into
SteamDeckHomebrew:mainfrom
zomars:add-audio-output-switcher
Open

Add Audio Output Switcher to Plugin Store#1103
zomars wants to merge 2 commits into
SteamDeckHomebrew:mainfrom
zomars:add-audio-output-switcher

Conversation

@zomars

@zomars zomars commented Aug 9, 2026

Copy link
Copy Markdown

Add Audio Output Switcher to Plugin Store

Audio Output Switcher lets you change the default audio output device directly from the Quick Access Menu, without a trip to desktop mode. This is especially useful on devices where gamemode has no output picker at all — e.g. on a Steam Machine driving a TV, the QAM audio section is only a CEC volume slider.

What it does:

  • Lists every available audio output (sink), with the active device marked and pinned to the top.
  • Switches the default sink with one tap, and also moves already-playing streams to the new device (set-default-sink alone only affects streams that start afterward), so audio follows immediately.
  • Repolls while the panel is open, so wireless headsets connecting/disconnecting show up without reloading.

The backend is the standard Python backend and shells out to pactl (already part of SteamOS) — no bundled binaries, and the plugin declares no flags, so it runs as the ordinary user rather than root. Commands go through asyncio.create_subprocess_exec with a timeout, and the PipeWire runtime dir is derived from decky.DECKY_USER's uid so pactl reaches the right user session.

Plugin panel

Task Checklist

Developer

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.
  • Generative AI was NOT used to write a majority of the code I am submitting.

Plugin

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or provides more/alternative functionality to a plugin already on the store.

Backend

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
  • No: I am using a custom binary that has all of it's dependencies statically linked.

Community

  • I have tested and left feedback on two other pull requests for new or updating plugins.
  • I have commented links to my testing report in this PR.

Testing

  • Tested by a third party on SteamOS Stable or Beta update channel.

@github-actions github-actions Bot added the not-plugin Not related to plugins themselves label Aug 9, 2026
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

Issues Found

  • Neither testing box is present in your description. Please include one of them per the Markdown comment above the testing section.

Next Steps

  1. If we found any issues above, please edit your pull request description to resolve them and leave a comment saying you've done so.
  2. For the quickest review, please see the Community section of the pull request template for how you can help other developers.
  3. Once your description is correct, a maintainer will review your pull request as soon as possible.

Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️

@github-actions

Copy link
Copy Markdown

This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy.

@github-actions github-actions Bot added stale plugin-addition Adding a plugin to the Plugin Store labels Aug 17, 2026
@zomars
zomars marked this pull request as ready for review August 17, 2026 23:28
@zomars
zomars requested a review from a team as a code owner August 17, 2026 23:28
@github-actions github-actions Bot removed the stale label Aug 18, 2026
@zomars

zomars commented Aug 18, 2026

Copy link
Copy Markdown
Author

Testing reports I left on other plugin pull requests, per the Community checklist:

Both were tested on SteamOS Stable with Decky Loader 3.2.6.

Picks up the async pactl rewrite, the derived PipeWire runtime dir, and the
titleView fix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

not-plugin Not related to plugins themselves plugin-addition Adding a plugin to the Plugin Store

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant