Psysonic Logo

Psysonic

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

Latest Release License Built with Tauri

--- 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) aesthetic. 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**: 8 deeply integrated themes (Catppuccin series + Nord series) 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 and German. - 📻 **Live "Now Playing"**: See what other users on your server are currently listening to in real-time. - 🎵 **Last.fm Scrobbling**: Full integration for scrobbling your tracks via the Navidrome server. - 💾 **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. - 🌊 **MilkDrop Visualizer**: Full-screen Butterchurn/MilkDrop visualizer in the Ambient Stage with hundreds of presets and smooth transitions. - 🎛️ **Queue Management**: Drag & drop reordering, shuffle, playlist saving/loading, and server-side queue synchronization. - 🎼 **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. - 🔗 **In-App Browser**: Last.fm and Wikipedia links on artist pages open in a dedicated native window — no need to leave the app. - 🔄 **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). ## ● 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. ## 📥 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**: `.AppImage` or `.deb` ## 🚀 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 MIT License. See `LICENSE` for more information.