Desktop music player in Rust — fast, minimalist, OS-agnostic.
Grape scans your local library, reads file metadata, displays cover art and albums, and plays your music without friction. Inspired by Dopamine, built on iced + rodio.
Grape is a Colony app. Install Colony, open the Multimedia category — Grape will appear there and be updated automatically on every new release.
Grab the portable executable for your platform from the Releases page:
| Platform | Asset |
|---|---|
| Linux (x86_64) | grape-linux |
| Windows (x86_64) | grape-windows.exe |
| macOS (Apple Silicon) | grape-macos |
| macOS (Intel) | grape-macos-x86 |
No installer — download, chmod +x on Unix, run. A new release is published
automatically on every merged change.
git clone https://github.com/Project-Colony/Grape.git
cd Grape
cargo run --release -- /path/to/my/libraryWith no argument, Grape uses the folder configured in preferences (default ~/Music).
Library
- Local scan based on an
Artist/Album/structure (or albums at the root). - Tag reading via lofty: title, artist, album-artist, compilation, duration, bitrate, codec, year, genre.
- Metadata pipeline with standard detection (ALBUMARTIST → ARTIST → "Various Artists" for compilations).
- Optional enrichment via Last.fm, with TTL cache and per-album manual overrides.
- Versioned local cache (
.grape_cache/) with signature-based invalidation (mtime + size). - Cover art: embedded covers first, fallback to local images in the album folder.
Playback
- Audio engine on rodio, configurable output (device + sample rate).
- Gapless playback, crossfade, automix.
- 3/5-band equalizer (Flat / Bass / Treble / Vocal presets + custom).
- Volume normalization, Quiet/Normal/Loud levels.
Navigation
- Artists, Albums, Tracks, Genres, Folders views.
- Playlists: create, rename, delete, drag-to-reorder.
- Split-pane playback queue (now-playing on the left, upcoming queue on the right).
- Search and multi-criteria filters (genre, year, duration, codec).
System integration
- Native "Now Playing" notifications (opt-in, via notify-rust).
- Tray icon, global shortcuts, autostart — detected with graceful fallback per OS.
- Hardware acceleration detection.
Misc
- Bilingual FR / EN interface with automatic system-language detection.
- Persistent preferences (audio, appearance, accessibility).
mp3 · flac · wav · ogg · m4a · aac · opus · aif / aiff · wma
Actual support depends on the codecs available on your system.
cargo check # fast typecheck
cargo test --lib # unit tests
cargo run --profile fast # dev build with optimized deps (fast compile, fast run)
cargo run --release # release buildThe fast profile combines opt-level = 3 on dependencies with minimal debug
info on user code: perfect for iterating on the UI without waiting for a full
release build.
assets/ visuals, fonts, logos
docs/ product and technical documentation
scripts/ git hooks, setup
src/ code (iced UI, library, player, system integration)
tests/ integration tests (cache, player, metadata)
After a scan, Grape writes to .grape_cache/ (relative to the library by default,
configurable as an absolute path in preferences):
index.json— global signature index.folders/— one JSON per album folder.tracks/— signatures + per-track metadata.covers/— cached cover art.metadata/— cached Last.fm responses.
A "Clear cache" button in preferences wipes the tree.
MIT © 2026 MotherSphere