Aurora Player is a local music player for Linux and Windows, built with Electron, Vue 3, and Tailwind CSS. It focuses on a feature-rich, clean and modern interface for managing and playing your personal music library.
Note: This project was developed with the assistance of AI tools. All code has been reviewed and tested by the maintainer.
| Library | Fullscreen |
|---|---|
![]() |
![]() |
| Artist page | Synced lyrics |
|---|---|
![]() |
![]() |
| Search |
|---|
![]() |
- Scan local folders for audio files (MP3, FLAC, OGG, WAV, M4A, AAC, OPUS, WMA)
- Browse by songs, albums, artists, years, or folder structure
- Detailed artist pages with bio, images, similar artists, active years, and country info
- Tag-based filtering - apply custom tags to tracks and albums, filter views by tag
- Auto-tagging for soundtracks and singles; separate soundtrack/singles library sections
- Real-time search across songs and albums with a dedicated search view
- Sort songs by title, artist, album, year, and duration
- Sort albums by name, artist, year, and track count
- Virtual scrolling for large libraries
- Queue with play next, play later, shuffle, and repeat modes (off, all, one)
- Waveform progress bar
- Crossfade between tracks with adjustable duration
- Audio output device selection
- Volume normalization (dynamics compressor)
- Drag-and-drop queue reordering
- Sleep timer (after song, after album, 15/30/45/60/90 minutes, or custom)
- Error auto-skip with notification
- Create, rename, delete, and reorder playlists
- Custom cover images for playlists
- Import playlists from M3U files
- Smart playlists with rule-based auto-population (genre, year, artist, album, title, BPM, etc.)
- Mark songs as favorites with inline heart buttons
- Multi-select with Ctrl+Click, Shift+Click, and Ctrl+A for bulk actions
- Now playing view with synced lyrics, album art, and waveform bar
- Adaptive accent colors extracted from album art
- Three fullscreen layouts: Default, Modern, and Artwork
- Animated fullscreen backgrounds (Lava Lamp, Sonar Ripple, Cinematic Grain)
- Animated album covers via Apple Music motion artwork
- Queue panel in fullscreen
- Automatic loading of local .lrc files alongside audio files
- Online lyrics fetching via LRCLIB with auto-save
- Manual lyrics search from within the app
- Synced lyrics display with manual time offset adjustment
- Enhanced LRC support (word-level timestamps)
- Built-in LRC syncer tool for creating lyrics from scratch
- Discord Rich Presence (5 format options, custom client ID support)
- Last.fm and ListenBrainz scrobbling
- Navidrome / Subsonic server streaming
- MPRIS D-Bus integration on Linux (media keys, desktop controls)
- Automatic Wayland / X11 display server detection on Linux
- Remote control via LAN (mobile access with PIN-based authentication)
- File association - open audio files directly with Aurora Player
- JSON-based theme system with full colour, glass, scrollbar, slider, and font overrides
- Light and dark theme support via base colour axis inversion
- Custom CSS injection on top of any theme
- Hot-reload - themes are detected automatically when dropped into the themes folder
- See docs/themes.md for the full format reference
- JavaScript plugin system with lifecycle hooks (track change, play, pause, queue, seek, etc.)
- Plugin API for controlling playback, library, playlists, favorites, themes, and UI
- Settings schema - plugins declare typed settings and Aurora auto-renders the UI controls
- Sidebar items, player bar slots, and fullscreen slots for injecting custom UI
- Per-plugin persistent key-value storage
- Optional CSS injection for plugin-specific styles
- See docs/plugins.md for the full API reference
- First-time setup wizard
- Aurora Stats - listening statistics with charts and artist breakdowns
- Library sync - mirror playlists and favorites across machines via a shared folder, with auto-push/pull
- Export and import settings, favorites, and playlists as a backup file
- Context menus for songs, albums, and playlists
- Cache management (covers, artist images, waveform data, animated covers)
- Window transparency toggle
- Toast notifications for user actions
- Automatic update checker (notifies once per new release)
- Custom iOS-style slider option
- Troubleshooting log viewer
Download the latest .AppImage from the Releases page. Make it executable and run:
chmod +x Aurora-Player-*.AppImage
./Aurora-Player-*.AppImage
Download the .pacman package from Releases and install with:
sudo pacman -U aurora-player-*.pacman
Or use the PKGBUILD included in the repository to build from source:
makepkg -si
A flake.nix is included. To build and run:
nix build
./result/bin/aurora-player
Or run directly:
nix run
Download the installer (.exe) or portable build from the Releases page.
- Node.js 18 or later
- npm
git clone https://github.com/Wilk087/Aurora.git
cd Aurora
npm install
npm run dev
This starts the Vite dev server with hot reload for the renderer and auto-restarts the Electron main process on changes.
Build the renderer and Electron main process without packaging:
npm run build
Build distributable packages:
npm run dist:pacman # Arch Linux .pacman package
npm run dist:appimage # Linux AppImage
npm run dist:win # Windows installer + portable
npm run dist:all # All platforms at once
Built packages are written to the release/ directory.
- Themes - theme format, CSS variable reference, and light/dark theme guide
- Plugins - plugin structure, manifest format, lifecycle hooks, and full API reference
- Example theme (Nord Dark) - dark theme example
- Example theme (Aurora Light) - light theme example
- Example plugin (Now Playing Logger) - beginner plugin with sidebar items, toasts, and settings
- Example plugin (Quality Badge) - intermediate plugin with IPC calls, player-bar/immersive slots, and DOM observers
electron/
main.ts Main process (IPC handlers, file I/O, protocols, MPRIS)
preload.ts Context bridge exposing window.api to the renderer
mpris.ts Custom MPRIS2 D-Bus service for Linux
subsonic.ts Subsonic/Navidrome REST API client
src/
components/ Reusable Vue components
composables/ Vue composables (useSelection, useToast, etc.)
plugins/ Plugin loader, API factory, and event bus
router/ Vue Router configuration
stores/ Pinia stores (library, player, playlist, favorites, theme, plugins)
types/ TypeScript interfaces (theme, plugin, etc.)
views/ Page-level view components
utils/ Utility functions
docs/ Theme and plugin documentation, examples
build/ App icons (PNG, ICO)
- Electron 33
- Vue 3.4 (Composition API)
- Pinia 2.1
- Vue Router 4
- Tailwind CSS 3.4
- TypeScript
- Vite 5
This project uses semantic versioning. The version is defined in package.json and is the single source of truth for the application. PKGBUILD and flake.nix reference it via comments and should be updated manually when bumping versions.
This project is licensed under the GNU General Public License v3.0.




