A lightweight macOS menu bar player for the locally installed Spotify desktop app. It shows the current track, provides essential playback controls, and displays a native notification when the track changes — without requiring a Spotify login.
- Current track, artist, album, and cover art
- Play, pause, previous track, and next track
- Smooth playback progress with interactive seeking
- Spotify volume control and mute toggle
- Shuffle and context repeat when supported by the current Spotify playback context
- Native macOS track-change notifications with cover art
- Optional launch at login
- Optional current track title next to the menu bar icon
- Configurable menu bar text format and length
- Copy track details or the Spotify link
- Sleep timer for a duration or the end of the current track
- User-configurable global keyboard shortcuts without extra permissions
- Native settings and permission status window
- Secure in-app updates powered by Sparkle
- Optional daily background update checks
- Optional automatic download and installation of signed updates
- Native Liquid Glass design on macOS 26 with a material fallback on older systems
- No Spotify OAuth, cloud storage, analytics, statistics, or telemetry
The app follows the macOS system language and currently includes:
- English
- German
- French
- Spanish
- Italian
- Dutch
- Portuguese
English is used as the fallback for unsupported languages.
- macOS 14 or later
- Apple Silicon Mac for the prebuilt release
- Spotify desktop app for macOS
- Download the latest ZIP from GitHub Releases.
- Extract
Spotify Notification.appand move it to the Applications folder. - Open the app. Because personal releases are not notarized with an Apple Developer account, macOS may require confirmation in System Settings → Privacy & Security on first launch.
- Allow Automation access when macOS asks for permission to control Spotify.
- Allow notifications if track-change alerts are desired.
The app runs only in the menu bar and does not add an icon to the Dock.
Open Settings → Updates to check for updates manually or configure automatic updates. If a signed update is available, the app shows its release information and can download, install, and relaunch itself.
Automatic daily checks and automatic download and installation are optional and disabled by default. Enabling automatic installation also enables daily checks. Disabling automatic checks disables automatic installation as well.
Updates are delivered through Sparkle and GitHub Releases. Both the appcast feed and every update archive are verified with an EdDSA signature before extraction.
Personal builds use an ad-hoc application signature and are not notarized. The initial installation therefore still requires the one-time Gatekeeper confirmation described above. Sparkle update signatures protect subsequent updates independently of an Apple Developer ID.
Spotify Notification communicates only with:
- the locally installed Spotify app through Apple's Automation interface;
- Spotify's cover-art URL when artwork is displayed or attached to a notification;
- the signed update feed and archive hosted on GitHub Releases when an update check is requested or enabled in the background.
No listening history, account information, or usage data is collected or stored.
Building requires Xcode 26 or later.
git clone git@github.com:marcelgross90/spotify-notification.git
cd spotify-notification
make test
make appThe packaged app is written to:
dist/Spotify Notification.app
The packaging script applies an ad-hoc code signature suitable for personal use.
Before the first release, configure the private Sparkle key as a GitHub Actions secret. The key remains in the local macOS Keychain and is exported only to GitHub's encrypted secret storage:
brew install gh
gh auth login
./scripts/configure-sparkle-secret.shThen create a release:
- Update
CFBundleShortVersionStringandCFBundleVersioninApp/Info.plist. - Commit and push the change to
main. - Update
RELEASE_NOTES.mdso its heading matches the app version. - Create and push a matching version tag, for example
v0.8.1.
The release workflow validates the tag and release-notes heading, runs all tests, builds the app, signs the update archive and appcast, and publishes the ZIP, appcast, release notes, and SHA-256 checksum as a GitHub Release. The private update key is never written to the repository or workflow logs.
App/ App metadata, icon, and localizations
Sources/SpotifyNotification/ Swift and SwiftUI application code
Tests/ Unit tests
scripts/ Packaging and validation scripts
.github/workflows/ Continuous integration and release automation
Spotify Notification is available under the MIT License.
The bundled Sparkle framework and KeyboardShortcuts package are distributed under their own permissive licenses, included inside the application bundle.
Spotify is a trademark of Spotify AB. This project is not affiliated with or endorsed by Spotify.