A macOS menu-bar app that plays a sound of your choice whenever a selected application is launched.
Discord opening? discord.mp3 plays. VS Code launching? code.wav plays.
Pick any .app, assign any .mp3 / .wav / .m4a / .aiff, and AppSound
handles the rest in the background.
- AppSound listens to macOS's public NSWorkspace API for application launches (no injection, no Accessibility / Screen Recording permissions).
- Only real user-visible apps are matched (background "Helper" processes are filtered out by their activation policy).
- Each app has its own sound, volume, delay, and can be enabled/disabled.
- Sound files are copied into
~/Library/Application Support/AppSound/Sounds/with a bundle-identifier prefix so two apps can use files with the same name without collisions.
- Per-app launch sounds (assign / preview / change / remove)
- Volume and delay per app, plus global defaults
- Global master switch and "play only once per session" mode
- Menu-bar icon with quick access to all apps
- Launch AppSound at login (LaunchAgent)
- Dark / light theme (follows macOS)
- macOS 13+ (Apple Silicon or Intel)
- Python 3.12+ (developed against 3.14)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py# 1. Generate the app icon (resources/icons/appsound.icns)
python build_icon.py
# 2. Build the app bundle
pyinstaller AppSound.spec
# 3. (Optional) Ad-hoc sign to avoid a "broken package" warning
codesign --force --deep --sign - dist/AppSound.app
# Result: dist/AppSound.appThis project is not notarized, so the first time you open the built app, macOS may warn that the developer cannot be verified. To open it:
- Right-click
AppSound.appin Finder - Choose Open
- Click Open in the dialog
To remove the warning entirely for other users, you would need to sign with a
Developer ID certificate and notarize via Apple's notary service
(xcrun notarytool) — this requires an Apple Developer Program membership
(US$99/year) and is out of scope for this project.
Settings are stored in a simple JSON file (no database):
~/Library/Application Support/AppSound/config.json
~/Library/Application Support/AppSound/Sounds/
You can back these up or delete them to reset AppSound.
- Uses only the public NSWorkspace launch API.
- Does not inject code into other apps, read their memory, or modify their files.
- Does not request Accessibility or Screen Recording permissions.
- Only plays the sound you assigned to an app that you added.