A desktop music player for Windows built with Rust, egui and rodio. It plays local files and streams from YouTube, YouTube Music and JioSaavn, and keeps playlists, liked songs, history and the queue in SQLite.
Requires a Rust toolchain (stable) and, for streaming, yt-dlp (the app can
download it on first run).
cargo build --release
./target/release/aria.exeDevelopment build:
cargo runChecks:
cargo test
cargo clippy --all-targetsEverything lives in %APPDATA%\Aria unless ARIA_DATA_DIR is set:
settings.json- theme, accent, volume, EQ, crossfade, optionslibrary.db- tracks, playlists, liked, history, queue, downloads, lyrics, playsdownloads/- offline copies of tracksaria.log- error log
Useful environment variables:
ARIA_DATA_DIR- override the whole data folder (used by tests and benchmarks)ARIA_JIOSAAVN_BASE- override the JioSaavn API base URLaria.exe --stats- print live memory usage to stdout
- Themes: dark and AMOLED, accent presets and hex entry
- Local file playback, folder scanning, drag and drop
- Streaming from YouTube, YouTube Music and JioSaavn with a provider fallback chain
- Two-layer queue (user queue plus context queue), shuffle, repeat one/all
- Media keys, volume flyout, keyboard shortcuts (F1 shows the list)
- Playlists, Liked Songs, history, listening stats, SQLite persistence with restore
- 10-band equalizer with preamp, built-in and named custom presets
- Miniplayer in Large, Medium and Compact layouts with position memory
- Downloads per track and per playlist, Downloaded view, cancel and retry
- Offline mode with automatic detection and skipping of unavailable tracks
- Autoplay radio when the queue ends, smart match picker with "Fix match"
- Loudness leveling, crossfade, synced lyrics (LRCLIB), sleep timer
- Imports from Exportify CSV, plain text lists and playlist URLs
- Crossfade overlaps tracks but is not sample-exact gapless playback.
- Loudness leveling adapts while playing instead of using stored ReplayGain tags.
- JioSaavn and YouTube results depend on third-party endpoints that can change.
- Streaming needs
yt-dlp; without it only local files and downloads play. - Windows only (tray-free background playback is not implemented).