← All work
Spindle app icon Launched · v2.5.0

Spindle.

A macOS desktop widget shaped like a 2000s-era portable music player. It shows whatever is playing, from any app — the album cover filling the screen, the title laid over it, and a working scroll wheel.

Night Drive

Spindle

1:24-2:51

    Platform
    macOS 14 or later
    Runs on
    Apple silicon & Intel
    Version
    2.5.0
    Built with
    Swift
    License
    MIT
    Four of the nine Spindle skins
    Four of the nine skins: Mini Silver, Mini Blue, Mini Pink and Mini Green.

    What it does

    Now playing, from anything.

    01

    Any app, not just Music

    It reads what is playing from the system media controls, so Music, Spotify, Safari, Chrome, IINA and VLC all show up — artwork included.

    02

    A click wheel that works

    Turn it to change the volume or move through the menu; the centre plays and pauses. Every step ticks — the sound is synthesised, not sampled.

    03

    Lives on your desktop

    Not a WidgetKit widget: a borderless panel pinned to the wallpaper behind your windows, sized to the macOS widget grid, on every Space.

    04

    Your library, browsable

    Playlists, Artists, Albums and Songs from Apple Music — or from Spotify through its Web API, signed in with PKCE and kept in your keychain.

    05

    Nine skins

    Including Liquid Glass and Frosted Glass, plus one you colour yourself with a hue wheel and sliders for opacity, borders and blur.

    06

    Asks for very little

    No Screen Recording, Accessibility or Full Disk Access. It only goes online to talk to Spotify — and only if you connect it.

    Controls

    The wheel, faithfully.

    Drag around the ring or simply scroll anywhere on the widget. Nothing is wheel-only: the screen is a control too, the volume bar can be dragged, and the scrubber seeks. The player at the top of this page works the same way — try it.

    1 2 3 4 4 5 6 7
    1. 1

      Scroll anywhere, or turn the wheel

      Now playing: Volume · In a menu: Moves the highlight

    2. 2

      Centre button

      Now playing: Play / pause · In a menu: Select

    3. 3

      MENU

      Now playing: Opens the menu · In a menu: Back up one level

    4. 4

      Right / left of the wheel

      Now playing: Next / previous track · In a menu: Next / previous track

    5. 5

      Bottom of the wheel

      Now playing: Opens the player you pick · In a menu: Same

    6. 6

      Click the screen

      Now playing: Opens the menu · In a menu: Selects that row

    7. 7

      Drag the scrubber

      Now playing: Jumps to that point

    Under the hood

    How it reads now playing.

    Since macOS 15.4, the private MediaRemote framework returns an empty dictionary to any process that isn't an Apple platform binary — an ordinary app can no longer simply ask what's playing.

    Spindle ships a small library and loads it inside /usr/bin/perl, which is a platform binary, using the technique from ungive/mediaremote-adapter. It subscribes to MediaRemote's change notifications and streams JSON back to the app — push-based and deduplicated, so idle playback costs nothing.

    The elapsed time it reports is a reading taken at a timestamp, not a live value, so the scrubber extrapolates from the timestamp instead of trusting the number. If a future macOS closes this route, Spindle falls back to AppleScript for Music and Spotify.

    Tested on macOS 15.4+

    Reading now-playing directly from the app0 keys Blocked
    Reading it from inside /usr/bin/perl31 keys, artwork included Works
    Sending play, pause and skip commands Works
    Setting shuffle and repeat Works
    Seeking Works
    Asking which app is playing Blocked
    Reading shuffle and repeat back No usable API

    Get Spindle.

    Free and open source · macOS 14 or later · Apple silicon & Intel

    First launch

    Spindle isn't signed with a paid Apple Developer ID, so macOS blocks it the first time. Open System Settings → Privacy & Security, click Open Anyway, and confirm. You only do this once. Or in Terminal:

    xattr -dr com.apple.quarantine "/Applications/Spindle.app"

    Spindle is an independent project and is not affiliated with, endorsed by, or connected to Apple Inc. All artwork is original; product names belong to their respective owners.