feat: Add support for player controls in macOS dock menu#1627
Merged
jeffvli merged 3 commits intojeffvli:developmentfrom Jan 30, 2026
Merged
feat: Add support for player controls in macOS dock menu#1627jeffvli merged 3 commits intojeffvli:developmentfrom
jeffvli merged 3 commits intojeffvli:developmentfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Owner
It is indeed. Originally, the main process only used these callback handlers for Linux MPRIS functionality as it wasn't needed elsewhere.
Maybe someday I will add a contribution guide, but generally as long as the code is logically sound and follows relatively closely to the current app structure it's fine. Looks good btw, thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi!
I've added a feature I've been missing on macOS - namely support for player controls in the macOS dock (play/pause/next/previous/stop) 🤓 This is a feature Spotify and Tidal have (and likely many others too), and is something I think many Mac users (myself included) is used to or even expecting to see (I know, we are honestly the worst - I'm seriously considering switching to Linux!)
Screenshots:
Technical considerations
I exposed the
use-mpris.tshook to macOS (previously Linux only). From my limited knowledge and understanding of the codebase it could appear that the MPRIS name is a bit misleading in this hook - but I just "slapped" on a simpleisMacOs()check that hopefully won't create problems on other platforms. The TypeScript compiler also complained about a missingsortNameproperty which I fixed by addingsortName: titleas a separate commit that can be omitted.UX considerations for adding this
Although the "tray" feature offers similar functionality this is in my opinion oftentimes a poor replacement for the more native experience that is having a menu on the Dock-icon (at least for more seasoned users). Lately a lot of apps adds unnecessary icons to the menu bar which I assume is because a lot of them is Electron-based and this is the default cross-platform behavior. Having both options however is trivial, as the tray functionality can be turned off and the dock menu isn't really intrusive. However it might lead to slightly more code to maintain - but the code could eventually be shared with the tray variant to minimize this.
Closing words
Forgive me if my PR structure is a bit rough in the edges here. I couldn't really find a contribution guide, so I just did my best with previous knowledge. Besides that I just wanted to say I really love this application and the great work that's been put into it so far. After boycotting Spotify and switching to Tidal the user experience have been rough. Feishin however is punching way above it's class here (and I'd love to contribute to make it even better).
In the future, adding something like Repeat and Shuffle might be something to consider - but for me personally that are actions I use less frequently and don't mind open the app to adjust.