A modern music player for the desktop and browser
Aria is a cross-platform music player featuring:
- Configurable views so you can group tracks by album, artist, and more
- Playlists and folders to keep things organized
- Queue management with persistence across playlists
- Custom themes and support for light/dark mode
- Plugins for connecting to external services
Aria is currently in an early 'alpha' state, so there are several limitations:
- The desktop app is currently untested on macOS
- The web app does not have a way of adding local music on Firefox/Safari
- Plug-ins/themes must be installed manually
- You must provide your own developer credentials to log in with Spotify
- Bugs and general instability are expected
To install Aria, download and run the latest release for your platform:
Windows (.exe) | macOS (.dmg) | Linux (.AppImage)
Additional formats (including .rpm, .deb, and .msi) are available on the Releases page.
You can also try out Aria online. The web version contains most of the desktop functionality, but requires that you re-select your music library folder at the start of each session.
Aria uses Tauri to provide a cross-platform desktop wrapper for a web app. The web app uses a combination of TypeScript, React, and Redux, with Vite for build tooling.
To build the web app, you will need to:
- Install Node.js (any version newer than v18.0.0).
- Clone or download this repository.
- Navigate to the downloaded folder and run
pnpm install. - Accept the prompt to install a specific version of the pnpm package manager. If no prompt appears, you can install pnpm manually.
- Run
pnpm devto run the web app in development mode orpnpm buildto build the web app.
To build the Tauri desktop app, you will also need to install the prerequisites listed on the Tauri website. You will then be able to use pnpm tauri dev to run the desktop app in development mode or pnpm tauri build to build and package the app into an executable.
- Project setup
- Player controls
- Initial plugin system
- Library management/views
- Shuffle/repeat
- Playlists
- Queue
- Library search
- Theme system
- Initial streaming plugins
- Plugin development documentation
- Playlist import/export
- Improved search (search for artists/albums)
- Improved plugin system (currently, plugins can only include browser JavaScript)
- Theme asset support (embedding images/fonts)
- In-app plugin/theme browser
- Metadata editing
- Lyrics support
- Equalizer
Currently the most significant challenge in this project is the plugin system. The goal is to enable integration with music streaming services, cloud storage providers, and services like Last.fm. However, the current implementation might not be very scalable. Any advice, suggestions, or contributions towards this goal would be greatly appreciated.