An elegant Apple Music desktop client for Linux, macOS and Windows. No frippery, just quality. A better class of Cider
An elegant Apple Music desktop client for Linux, macOS and Windows. No frippery, just quality. A better class of Cider
Sidra
An elegant Apple Music desktop client for Linux, macOS and Windows. No frippery, just quality. A better class of Cider
Made with for
Sidra is Apple Music as a proper desktop citizen on Linux, macOS, and Windows - wired into each platform's native media subsystem, not bolted on top.
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 - 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. Apple owns the interface and keeps it current; Sidra inherits every improvement automatically.
AudioContext, DSP, or resampling of its own (Chromium and the OS can still resample); lossless on macOS and Windows via CastLabs EVS production VMP signingorg.mpris.MediaPlayer2.sidra) over D-Bus, with seeking, queue-preserving Stop, media URL playback and radio song metadataSIDRA_DISABLE_AUTO_UPDATE=1Open Settings with the gear button beside Back, Forward and Reload. With the player focused, press Ctrl+, on Linux or Windows, or Cmd+, on macOS. The resizable window contains player, start page, style, zoom, close-to-tray, notification, Discord and Last.fm preferences. Changes save immediately. The existing tray preferences remain available. View Settings screenshot.
Track notifications show artwork and let you select Play/Pause, Previous or Next without opening Sidra. Click the notification body to show the player. The playback button follows the current state. State changes do not reopen a dismissed notification. New tracks and radio songs replace the previous playback announcement. On Linux, Sidra requests transient notifications, so history retention depends on the notification service. On Linux, the controls and body click require a notification service that supports actions. On macOS, the controls require a signed app and alert-style notifications. The current unsigned macOS releases do not meet that requirement.
Episode 79: Pouring out the Sidra
Sidra 1.0 on the Linux desktop (German)
I am a presenter on Linux Matters and discussed Sidra's origins in Episode 79. Linux Magazin Online covers Sidra 1.0 and includes an interview with me.
[!IMPORTANT] Sidra's macOS and Windows releases are currently unsigned, requiring Gatekeeper and SmartScreen workarounds at install time. Sponsoring the project goes directly towards code-signing certificates to remove that friction for every user.
Grab the latest release from GitHub Releases.
Linux builds ship for x86_64 and arm64. Pick the file that matches your CPU: Sidra-linux-x86_64.AppImage or Sidra-linux-arm64.AppImage, -linux-amd64.deb or -linux-arm64.deb, .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. The snap is published for both, so snap install sidra picks the right one.
AppImage
On Debian 13 (Trixie) and Ubuntu 24.04 or newer, install the AppImage FUSE dependency first:
sudo apt install libfuse2t64
Runs anywhere, no installation:
chmod +x Sidra-*.AppImage && ./Sidra-*.AppImage
Debian/Ubuntu
Use the .deb package unless you need AppImage:
sudo apt install ./Sidra-*.deb
Fedora/openSUSE
sudo dnf install ./Sidra-*.rpm # Fedora
sudo zypper install ./Sidra-*.rpm # openSUSE
Snap - Ubuntu and other snapd-enabled distributions:
sudo snap install sidra
AUR - Arch Linux and derivatives:
yay -S sidra-bin
Nix:
With flakes enabled, install Sidra for your user:
nix profile add github:wimpysworld/sidra
For NixOS or Home Manager, add Sidra to your flake.nix inputs:
inputs.sidra.url = "github:wimpysworld/sidra";
NixOS:
environment.systemPackages = [
inputs.sidra.packages.${pkgs.stdenv.hostPlatform.system}.default
];
Home Manager:
home.packages = [
inputs.sidra.packages.${pkgs.stdenv.hostPlatform.system}.default
];
These module snippets need inputs in their function arguments, passed through NixOS specialArgs or Home Manager extraSpecialArgs.
For Home Manager inside NixOS, use home-manager.extraSpecialArgs.
DMG - open and drag Sidra to Applications.
[!WARNING] On first launch macOS may report: "Sidra.app" is damaged and can't be opened. You should move it to the Bin. The app is unsigned, not corrupt. macOS shows this because the download is quarantined.
Strip the quarantine attribute in Terminal, then open Sidra normally:
xattr -dr com.apple.quarantine /Applications/Sidra.app
System Settings → Privacy & Security only offers Open Anyway for the milder "unidentified developer" prompt, never for "damaged" - so Terminal is the dependable path.
Installer (.exe) - run and follow the prompts.
SmartScreen will warn the installer is unsigned. Click More info then Run anyway.
Choose Style in Settings. Sidra ships with Catppuccin, Dracula, Everforest, Gruvbox, Nord, Rosé Pine, Solarized, and Tokyo Night, plus the default Apple Music styling.
These theme examples show different artist pages. Select an image to view the full-resolution screenshot.
| Everforest | Catppuccin |
|---|---|
| Gruvbox | Dracula |
Your chosen theme applies to Apple Music, Apple Music Classical and Settings.
Copy custom-theme.json to Sidra's user data directory, then edit its colours:
| Platform | File |
|---|---|
| Linux | ~/.config/Sidra/custom-theme.json |
| macOS | ~/Library/Application Support/Sidra/custom-theme.json |
| Windows | %APPDATA%\Sidra\custom-theme.json |
On Linux, a set XDG_CONFIG_HOME replaces ~/.config.
A valid file adds one Custom Theme choice under Style in Settings. Select it once. Saved edits apply without a restart, including in an open Settings window.
The example contains all 12 required colours in dark:
{
"dark": {
"base": "#1e1e2e",
"mantle": "#181825",
"crust": "#11111b",
"surface0": "#313244",
"surface1": "#45475a",
"surface2": "#585b70",
"overlay": "#6c7086",
"text": "#cdd6f4",
"subtext1": "#bac2de",
"subtext0": "#a6adc8",
"accent": "#f38ba8",
"accentHover": "#eba0ac"
}
}
Use six-digit hex colours, such as #1e1e2e. JSON requires double quotes and accepts no comments or trailing commas.
For a separate light scheme, add a light object with the same 12 keys. Without it, Sidra uses dark in both modes.
| Keys | Colour role |
|---|---|
base, mantle, crust |
Page, player and footer backgrounds |
surface0, surface1, surface2 |
Controls, scrollbars and borders |
text, subtext1, subtext0, overlay |
Primary, secondary, emphasised secondary and tertiary text |
accent, accentHover |
Highlight colour and its hover or pressed state |
Sidra accepts low-contrast palettes without adjustment. Choose colours that you can read comfortably. Custom themes change colours only, not fonts or layout.
If the file is missing, unreadable or invalid, Custom Theme disappears and an active custom theme falls back to Apple Music. Fix or restore the file to recover the theme automatically, unless you selected another style.
Migrating from custom CSS: Sidra ignores existing custom.css files but leaves them untouched.
Copy your colours into the JSON example. Sidra cannot automatically convert arbitrary CSS, and CSS rules no longer apply.
Sidra ships no mini player and does not need one. Christian Lauinger (@ChrisLauinger77) asked for one in #125, then built MPRIS MiniPlayer: a small GTK4/libadwaita window that controls any MPRIS player on Linux.
It pairs beautifully with Close to tray. Hide the Sidra window, keep the mini player on top, and place it anywhere on your desktop. Thank you, Christian
Sidra supports controllers that expose the browser's standard Gamepad mapping. The controls work in Apple Music and Apple Music Classical:
| Controller input | Action |
|---|---|
| D-pad | Move up, down, left, or right |
| A button | Select the focused item |
| B button | Go back when navigation history permits |
Hold a D-pad direction to repeat it. The A and B buttons act once per press. Controller input does not control media playback or settings.
Nothing is sent to Last.fm until you connect an account. In Settings, choose Connect to Last.fm…, then approve Sidra in your browser. Settings and the tray show your username after approval. Sidra also sends a notification if notifications are on.
Use Settings or the tray Last.fm submenu to turn scrobbling on or off, or disconnect. You can also connect through that submenu. Sidra sends the now-playing track when playback starts or resumes, and scrobbles it once it has played for half its length or four minutes, whichever comes first. Tracks of 30 seconds
No open issues yet, or sync has not completed.