Note
⫚ Fork of the Original Music Decoy
This is a modified version of the original Music Decoy app. The key difference is that this fork opens a default media player specified by the user in the configuration, rather than simply preventing the Music app from launching.
- Download, unzip, move to
/Applications
- or..
brew install music-decoy
Nothing. The app does absolutely nothing while running. 0% CPU all day long.
But by simply having it running, the macOS system won't launch the Music app whenever you accidentally press Play.
It won't launch Music even if you try to launch it manually! that might not actually be a good thing, but.. oh well
By having the same bundle identifier as the system Music app: com.apple.Music
In more technical terms, this is what I found out about how the ▷ Play mechanism works:
- The
Play
event is caught by thercd
daemon (living at/System/Library/CoreServices/rcd.app/Contents/MacOS/rcd
) - The daemon checks if there is any app playing something and forwards the event to that app
- If there is no such app,
rcd
checks if any running app hascom.apple.Music
as its bundle identifier- Without a running
com.apple.Music
app,rcd
launches the system Music app - But if there is such an app, the event is forwarded to it instead
- Without a running
The app has no Dock icon and no menubar icon so to quit it you'd need to do one of the following:
- Launch Activity Monitor, find Music Decoy and press the ❌ button at the top
- Run the following command in the Terminal:
killall 'Music Decoy'
Based on this StackExchange answer, there are a few different ways to achieve the same effect:
launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist
- Problem: disables the Play button completely
- noTunes which listens for launched apps and kills Music as soon as it is launched
- Problem: it does use a tiny bit of CPU in the background although checking for launched apps is very little work
- Advantage: it can launch a custom app on Play which this app can't do
I think they were only asked once, and they might not even be questions but I might as well record the info for posterity.
Looks like VLC tries to use ScriptingBridge to send commands to the Music app.
warning: failed to get scripting definition from /Applications/Music Decoy.app; it may not be scriptable.
-[SBApplication playerState]: unrecognized selector sent to instance 0x600003399050
You can fix this by configuring the following setting:
You can use this macOS Shortcut: Music.shortcut
It will quit Music Decoy and launch the Music app, with a small delay between the two actions.
You can add it to your Dock for easy access: