Skip to content

Add Custom Toast Sounds - #235

Open
Nelethor wants to merge 2 commits into
SteamClientHomebrew:mainfrom
Nelethor:add-custom-toast-sounds
Open

Add Custom Toast Sounds#235
Nelethor wants to merge 2 commits into
SteamClientHomebrew:mainfrom
Nelethor:add-custom-toast-sounds

Conversation

@Nelethor

Copy link
Copy Markdown

Custom Toast Sounds

Custom Toast Sounds is a Starlight plugin that replaces Steam's achievement
notification and private-message sounds in memory using user-selected WAV files.

It provides separate Apply, Test, and Restore controls for both sounds and
automatically reapplies configured sounds when Steam starts. It does not modify
any Steam-managed files.

Task Checklist

Developer

  • I am the original author or an authorized maintainer of this plugin.
  • I have complied with all license requirements for the libraries used, including providing appropriate notices where necessary.
  • My plugin is fully open source and does not depend on any external paid services, except for widely trusted and well-known platforms. Additionally, neither I nor anyone associated with me profits from any such services.

Plugin Functionality

  • I have tested the plugin on both the Stable and Beta Steam update channels.
  • My plugin is unique, or provides additional or alternative functionality to plugins already on the store.

The plugin has currently been tested on the Steam Stable update channel.

Backend Configuration

  • No: I use a standard Millennium Python backend in my plugin.
  • No: I use custom binaries or rely on external FOSS projects that are not part of Millennium's Starlight plugin environment.

The plugin uses Starlight's Lua backend and TypeScript frontend. It does not bundle or execute custom native binaries.

Community Contribution

  • I have tested and left feedback on two other plugin pull requests.
  • I have added links to those feedback comments in this PR.

Testing Instructions

  1. Install and enable Custom Toast Sounds.
  2. Open the plugin's Configure screen.
  3. Select a valid WAV file for the achievement notification and click Apply.
  4. Use the achievement Test button and verify that the custom sound plays.
  5. Select a valid WAV file for private messages and click Apply.
  6. Send a private message from another Steam account and verify that the custom sound plays.
  7. Restart Steam and verify that both configured sounds are automatically reapplied.
  8. Use the corresponding Restore buttons and verify that Steam's original sounds return.
  • Verified by a third party on Steam Client Stable.
  • Verified by a third party on Steam Client Beta.

@kuusei

kuusei commented Aug 31, 2026

Copy link
Copy Markdown

Disclosure: I am the author of #241 and tested this PR as part of the Community Contribution requirement.

Toast and private-message intercepts should share one URL matcher. Messages already strip the query string, lowercase, and endsWith the sound path; toast uses url === '/sounds/desktop_toast_default.wav'. I have not logged PlayAudioURL to prove toast currently ships a host or cache-buster — the issue is the two special cases. If Steam ever changes how that toast URL is spelled, the override fails closed and the default sound plays. Pull the check into one helper and use it for both.

@kuusei kuusei mentioned this pull request Aug 31, 2026
9 tasks
@Nelethor

Copy link
Copy Markdown
Author

Thanks, fixed in fd2fc57. Both toast and private-message intercepts now use a shared URL matcher that strips the query string, lowercases the URL, and matches by the sound-path suffix. I tested achievement notifications, real private messages, restart persistence, and Restore; everything works correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants