Psysonic Logo

Psysonic

A modern, gorgeous, and blazing fast desktop client for Subsonic API compatible music servers (Navidrome, Gonic, etc.).

Latest Release License: GPL v3 Built with Tauri AUR

--- Psysonic is a beautiful desktop music player built completely from the ground up for the modern era. Utilizing **Tauri v2** and **React**, it offers a native-feeling, lightweight, and incredibly fast experience with a stunning UI inspired by the [Catppuccin](https://github.com/catppuccin/catppuccin) and [Nord](https://www.nordtheme.com/) aesthetics. Designed specifically for users hosting their own music via Navidrome or other Subsonic API servers, Psysonic aims to be the best way to interact with your personal library. ![Psysonic Screenshot](public/screenshot.png) ## ✨ Features - 🎨 **Gorgeous UI**: 30 deeply integrated themes across 7 groups β€” Catppuccin, Nord, Retro (Gruvbox), Tokyo Night, Betriebssysteme (Cupertino, Aero Glass, Luna Teal), and Psysonic originals (WnAmp, Poison, Nucleo, Neon Drift…) β€” with smooth glassmorphism effects and micro-animations. - ⚑ **Blazing Fast**: Built with Rust & Tauri β€” native audio engine (rodio), minimal RAM usage compared to typical Electron apps. - 🌍 **Internationalization (i18n)**: Fully translated into English, German, French, and Dutch. - πŸ“» **Live "Now Playing"**: See what other users on your server are currently listening to in real-time. - 🎡 **Last.fm Integration** *(Beta)*: Direct scrobbling, Now Playing updates, love/unlove, Similar Artists, and top stats β€” no Navidrome configuration required. - πŸ’Ύ **IndexedDB Caching**: Ultra-fast loading times with persistent IndexedDB image caching for cover art and artist images. - πŸ“€ **Album Downloads**: Support for downloading entire albums directly to your local machine. - πŸ’Ώ **Album & Artist Views**: Beautiful grid displays and detailed artist pages with related albums and color-coded initial avatars for fast browsing. - 〰️ **Waveform Seekbar**: Canvas-based waveform with a blue-to-mauve gradient and glow effect β€” click or drag anywhere to seek. - πŸŽ›οΈ **Queue Management**: Drag & drop reordering, shuffle, playlist saving/loading, and server-side queue synchronization. - ⌨️ **Configurable Keybindings**: Rebind any playback action (play/pause, next, seek, volume…) directly in Settings. - πŸ”€ **Font Picker**: 10 UI fonts to choose from in Settings β†’ Appearance. - 🎼 **Random Mix**: Generate a random playlist from your entire library. Filter by keyword or pick a Super Genre (Metal, Rock, Electronic, Jazz…) for a focused mix with progressive loading. - πŸ”„ **Update Notifications**: Built-in update checker (on startup + every 10 minutes) that notifies you when a new version is available on GitHub. - πŸ–₯️ **Cross-Platform**: Available natively for Windows, macOS, and Linux (including Wayland support). ## πŸ—ΊοΈ Roadmap ### βœ… Completed - [x] Native Rust/rodio audio engine (replaces Howler.js) - [x] 10-band graphic EQ with built-in and custom presets - [x] Crossfade between tracks - [x] Replay Gain (track + album mode) - [x] Gapless playback - [x] Waveform seekbar - [x] Last.fm scrobbling, Now Playing & love/unlove *(beta)* - [x] Similar Artists via Last.fm, filtered to library - [x] Statistics β€” Last.fm top charts & recent scrobbles - [x] Multi-server support - [x] IndexedDB image caching - [x] Random Mix with keyword filter & Super Genre mix - [x] 35 themes across 8 groups: Catppuccin, Nord, Retro (Gruvbox), Tokyo Night, Operating Systems, Movies, Psysonic originals, Psysonic Mediaplayer - [x] Internationalization (English, German, French, Dutch) - [x] AUR package (Arch / CachyOS) - [x] Configurable keybindings - [x] Font picker (10 UI fonts) ### 🚧 In Progress - [ ] **Last.fm integration** β€” stabilising, moving out of beta - [ ] **Crossfade** β€” stability improvements ### πŸ“‹ Planned - [ ] FLAC seeking fix - [ ] General UI polish & visual refinement - [ ] More languages --- ## ● Known Limitations - **Linux (drag & drop cursor feedback)**: Due to a WebKitGTK limitation, the drag cursor does not reflect the drop operation type β€” it may appear as a "forbidden" symbol or show no indicator at all, depending on the desktop environment. Drag and drop itself works correctly. - **FLAC seeking**: Jumping to a position in a FLAC file via the waveform seekbar currently does not work. Seeking in MP3, OGG, and other formats is unaffected. This is a known issue and will be investigated. ## πŸ“₯ Installation Navigate to the [Releases](https://github.com/Psychotoxical/psysonic/releases) page and download the installer for your operating system. - **Windows**: `.exe` or `.msi` - **macOS**: `.dmg` (Universal or Apple Silicon) - **Linux (Ubuntu/Debian)**: `.deb` from GitHub Releases - **Linux (Fedora/RHEL)**: `.rpm` from GitHub Releases - **Linux (Arch/CachyOS)**: AUR β€” `yay -S psysonic` or `paru -S psysonic` > The AUR package builds from source using your system's own WebKitGTK β€” no bundled libs, no EGL/Mesa compatibility issues. ## πŸš€ Getting Started 1. Download and install Psysonic. 2. Open the app and enter your Subsonic/Navidrome server details (URL, Username, Password). 3. If applicable, you can provide both an external URL and a local LAN IP. Psysonic allows you to quickly toggle between them in the Settings. 4. Enjoy your music! ## πŸ› οΈ Development If you want to build Psysonic from source or contribute to the project: ### Prerequisites - [Node.js](https://nodejs.org/) (v18+) - [Rust](https://www.rust-lang.org/) (v1.75+) - OS-specific build dependencies for Tauri (see the [Tauri prerequisites guide](https://tauri.app/v2/guides/getting-started/prerequisites)). ### Setup ```bash # Clone the repository git clone https://github.com/Psychotoxical/psysonic.git cd psysonic # Install node dependencies npm install # Run in development mode npm run tauri:dev # Build for production npm run tauri:build ``` ## 🀝 Contributing Contributions are completely welcome! Whether it is translating the app into a new language, fixing a bug, or proposing a new feature. 1. Fork the Project 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the Branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request ## πŸ“„ License Distributed under the **GNU General Public License v3.0**. See `LICENSE` for more information. This means: you are free to use, study, and modify Psysonic. If you distribute a modified version, you must release it under the same GPL v3 license and keep the original copyright notice intact. You may **not** incorporate this code into proprietary software.