# Sidra: an Apple Music client that wraps the web app instead of replacing it

> Sidra is an Electron shell for music.apple.com that aims to be a proper desktop citizen on Linux, macOS and Windows, wiring the Apple interface into each platform's native media subsystem rather than building a player of its own. The audio path is deliberately untouched, but the cost is that it depends on a third party Electron fork, the macOS and Windows builds are unsigned, and a handful of macOS notification features simply do not work in the current releases.

**wimpysworld/sidra** — An elegant Apple Music desktop client for Linux, macOS and Windows. No frippery, just quality. A better class of Cider 🍎

- Repository: https://github.com/wimpysworld/sidra
- Website: https://github.com/wimpysworld/sidra
- Stars: 718 · Forks: 41
- Language: TypeScript
- License: BlueOak-1.0.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/wimpysworld-sidra

## Why Sidra wraps the web app rather than reimplementing it

The stated problem is specific. Most Apple Music desktop clients break the audio, mangle the playback controls, or bury you under a custom UI that Apple never signed off on, and the project says the problem is worst on Linux.

Sidra takes the opposite approach: wrap music.apple.com directly, stay out of the way, and let the audio through untouched. The rationale is written into that choice. Apple owns the interface and keeps it current, so Sidra inherits every improvement automatically.

That single decision shapes everything else, including the trade-offs. There is no native rendering pipeline, no custom player, no re-implementation of the Apple Music front end. What there is instead is platform integration: the MPRIS interface on Linux, the Now Playing widget and Dock menu on macOS, the GSMTC flyout and taskbar overlay on Windows, plus desktop notifications with playback actions, Discord rich presence and Last.fm scrobbling.

The repository is an Electron app written in TypeScript, version 1.2.0, with an appId of world.wimpys.sidra, and the licence is BlueOak-1.0.0. The last push was on 2026-10-20, the same day as the 1.2.0 release.

## The audio path is deliberately left alone

The feature list leads with untouched audio, and the specifics matter more than the slogan. Sidra adds no AudioContext, no DSP and no resampling of its own, though the note is careful that Chromium and the operating system can still resample. Lossless on macOS and Windows comes through CastLabs EVS production VMP signing.

That last clause is the most consequential technical detail in the project, and it reaches into the build. The Electron dependency is not the upstream release but a CastLabs fork, pinned to a specific tag, and the justfile has a private recipe that signs the local Electron binary with CastLabs EVS VMP, invoking the evs-vmp sign-pkg tool on the node_modules/electron/dist directory. The recipe is macOS only, with a Linux stub, and it is skipped entirely if the Electron directory is not present.

The Linux build takes a different route for Widevine DRM, through CastLabs Electron, while macOS and Windows both get full Widevine DRM with EVS production VMP signing. So the lossless claim is tied to the signed builds, and the two platforms are not identical in how they get there.

The same dependency choice explains another part of the project. The justfile has a macOS-only private recipe that restores macOS framework symlinks that extract-zip breaks during npm install, rebuilding the Versions/Current links and the Resources, Libraries and Helpers entries inside each framework. That is the kind of repair you write when your Electron distribution comes from a source that a plain npm install mangles.

## Platform integration, key by key

The three platforms get different native surfaces, and the details are the substance of the project.

On Linux, beyond the Widevine route, there is Wayland and X11 support and bi-directional MPRIS over D-Bus using the org.mpris.MediaPlayer2.sidra service name, with seeking, a queue-preserving Stop, media URL playback and radio song metadata. The Application Indicator is a tray element showing Now Playing with track, artist, album and artwork, playback controls, volume and mute, plus a start page and last session restore, a style switcher, a zoom control, close to tray with opt-in Hide and Show entries, share current track on macOS and auto-update status.

On macOS there is a Now Playing widget, a Dock menu with playback controls, a Dock progress bar, an app menu with Cmd+Q and About, and the native share sheet for the current track.

On Windows there is a GSMTC media flyout, a taskbar thumbnail toolbar with play, pause, next and previous, and a taskbar overlay icon with a progress bar showing playback state and position.

The Apple Music Classical service is a first-class citizen rather than an afterthought. Back, Forward and Reload are injected into both Apple Music and Apple Music Classical, and you can switch at runtime through Player in Settings or the tray. The start pages differ between the two services, with Home, Browse, Playlists, Search or your last page for Classical, and Home, New, Radio, All Playlists or your last page for Apple Music. A standard controller can move through and select items in both services, and scrolling over the player bar volume control changes volume 5 percent a notch.

## Notifications, themes and the small features

Track notifications show artwork and let you select Play/Pause, Previous or Next without opening the app, and clicking the notification body shows the player. The playback button follows the current state, and state changes do not reopen a notification you dismissed. New tracks and radio songs replace the previous playback announcement.

On Linux, Sidra requests transient notifications, so history retention depends on the notification service, and the controls and body click require a notification service that supports actions. On macOS the controls require a signed app and alert-style notifications, and the documentation states that the current unsigned macOS releases do not meet that requirement. That is a concrete, checkable limitation rather than a vague caveat, and it is the kind of thing worth verifying on the machine you intend to use.

The visual side is eight bundled themes, Catppuccin, Dracula, Everforest, Gruvbox, Nord, Rosé Pine, Solarized and Tokyo Night, plus a live-reloading custom colour theme. Settings open with the gear button beside Back, Forward and Reload, or with Ctrl and a comma on Linux and Windows and Cmd and a comma on macOS, and changes save immediately.

Last.fm scrobbling is opt-in and requires browser approval, and Discord rich presence shows what you are listening to, including on Vesktop Flatpak on Linux.

## Installing on Linux, and the FUSE detail that trips people up

The install path is GitHub Releases, and the Linux builds ship for x86_64 and arm64. You pick the file that matches your CPU, either Sidra-linux-x86_64.AppImage or Sidra-linux-arm64.AppImage, the deb package with -linux-amd64.deb or -linux-arm64.deb, or the rpm with .x86_64.rpm or .aarch64.rpm. The arm64 builds are made natively on ubuntu-24.04-arm runners and update from the release like the x86_64 ones. A snap is published for both, so snap install sidra picks the right one.

The AppImage route is two commands:

```bash
chmod +x Sidra-linux-x86_64.AppImage
./Sidra-linux-x86_64.AppImage
```

There is a subtlety in the FUSE handling that the documentation spells out. The AppImage runtime bundles its own FUSE library and does not need the host's libfuse2 or libfuse2t64 package, but a normal launch still needs access to /dev/fuse and a working fusermount for FUSE 2 or fusermount3 for FUSE 3 helper from your distribution. So the dependency is not eliminated, it is just bundled, and the kernel device access is still required.

The auto-update story differs by packaging format. AppImage and NSIS get a silent over-the-air download with a restart prompt, which can be turned off with SIDRA_DISABLE_AUTO_UPDATE=1, while deb, rpm, Flatpak, Nix and the macOS DMG get an update notification linking to the release page.

## What is missing, and what the project does not claim

The largest gap is signing, and the project is explicit about it. Sidra's macOS and Windows releases are currently unsigned, requiring Gatekeeper and SmartScreen workarounds at install time, and the funding note says sponsoring the project goes directly towards code-signing certificates to remove that friction for every user.

That same unsigned status is why the macOS notification controls do not work, so the two facts are the same fact.

The documentation also does not mention an offline mode, a local library or any third party music source, and the architecture makes the absence predictable. Wrapping the web app means the catalogue, the interface and the login are Apple's, and the readme describes no way to point the client at a different service.

The build tooling is worth knowing about if you plan to compile. The package uses a prebuild script that runs a Node script to inject Last.fm credentials, tsc for the TypeScript build, and vitest for the tests. The repository also carries nix/ and flake.nix for Nix users, a justfile, a .mcp.json, AGENTS.md and CLAUDE.md, and a vitest.config.mts. The electron-builder configuration lists the files that must be unpacked from the asar archive, including the Last.fm credentials file, the locale JSON files for the about, loading, tray and update strings, the musicKitHook and navigationBar scripts, and the settings and about HTML and CSS, which is a fair picture of how much of the app is injected into the page.

The project is by Martin Wimpress, who is a presenter on Linux Matters and discussed its origins in Episode 79.

## Conclusion

Adopt Sidra if you want Apple's own interface, kept current by Apple, with a native media integration on your platform rather than a reimplemented player, because wrapping music.apple.com and inheriting its updates is a genuinely different bet from building a client against the API. Do not adopt it if you need signed macOS or Windows builds, since the current releases are unsigned and need Gatekeeper and SmartScreen workarounds, and do not expect the macOS notification playback buttons to work because the documentation says plainly that the unsigned releases do not meet that requirement. Before you install, check whether the platform you care about has a build you can actually run, and read the audio section rather than assuming the lossless claim applies everywhere, since it holds on macOS and Windows through CastLabs EVS production VMP signing while the Linux build uses a different Widevine route.

## FAQ

### What is Sidra and how does it differ from other Apple Music desktop clients?

Sidra wraps music.apple.com directly inside Electron rather than reimplementing the player, so Apple keeps the interface current and Sidra inherits every improvement. It adds platform integration such as MPRIS on Linux, the Now Playing widget and Dock menu on macOS, and the GSMTC flyout and taskbar toolbar on Windows.

### How do I install Sidra on Linux?

Download the release from GitHub Releases. Linux builds ship for x86_64 and arm64 as AppImage, deb, rpm and snap, with the snap published for both so snap install sidra picks the right one. For the AppImage, make it executable with chmod +x and then run it, and note that the AppImage bundles its own FUSE library but still needs access to /dev/fuse and a fusermount or fusermount3 helper.

### Does Sidra modify the audio it plays?

No. Sidra adds no AudioContext, DSP or resampling of its own, though Chromium and the operating system can still resample. Lossless on macOS and Windows comes through CastLabs EVS production VMP signing, and the Linux build uses Widevine DRM via CastLabs Electron.

### Why do the macOS notification playback buttons not work?

The controls on macOS notifications require a signed app and alert-style notifications, and the documentation states that the current unsigned macOS releases do not meet that requirement. The macOS and Windows releases are currently unsigned and need Gatekeeper and SmartScreen workarounds at install time.

### Does Sidra support Apple Music Classical and mobile-style controls?

Yes. Apple Music Classical is a first-class service, switchable at runtime through Player in Settings or the tray, with its own start pages, and Back, Forward and Reload are injected into both services. A standard controller can move through and select items in both, and scrolling over the player bar volume control changes volume 5 percent a notch.

## Sources

- [License: BlueOak-1.0.0](https://github.com/wimpysworld/sidra/blob/main/LICENSE)
- [Project website](https://github.com/wimpysworld/sidra)
- [README](https://github.com/wimpysworld/sidra/blob/main/README.md)
- [Releases](https://github.com/wimpysworld/sidra/releases)
- [wimpysworld/sidra on GitHub](https://github.com/wimpysworld/sidra)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/wimpysworld-sidra
