Themes: - Add Poison (phosphor green on charcoal), Nucleo (warm brass light), Classic Winamp (LCD glow, Winamp yellow/orange) themes - Overhaul Psychowave — refined deep violet, no longer WIP - Reorganise ThemePicker into groups: Catppuccin, Nord, Retro, Tokyo Night, Psysonic Themes - Add --volume-accent CSS var for per-theme volume slider colour override Queue: - Full toolbar redesign with centred round buttons (Shuffle/Save/Load/Clear/Gapless/Crossfade) - Crossfade popover with 1–10 s range slider, right-aligned to avoid viewport overflow - Queue header: title + count + duration inline in accent colour, close button removed - Tech info (codec/bitrate) as frosted-glass overlay badge on cover art UI: - CoverLightbox shared component for album cover (AlbumHeader) and artist avatar (ArtistDetail) - NowPlayingDropdown: separate spinning/loading state — button always clickable, icon spins 600 ms min - Settings: "Experimental" badge on Crossfade and Gapless toggles - Help page: 2-column grid layout, new Crossfade & Gapless Q&A entry, updated theme/language entries i18n: - Full French (fr) and Dutch (nl) translations across all namespaces - Language selector sorted alphabetically (nl, en, fr, de) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.3 KiB
Psysonic
A modern, gorgeous, and blazing fast desktop client for Subsonic API compatible music servers (Navidrome, Gonic, etc.).
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 and Nord 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.
✨ Features
- 🎨 Gorgeous UI: 21 deeply integrated themes — Catppuccin, Nord, Retro (Gruvbox), Tokyo Night, and Psysonic originals (Classic Winamp, Poison, Nucleo, Psychowave) — 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.
- 🌊 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.
- 🔄 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
- Native Rust/rodio audio engine (replaces Howler.js)
- 10-band graphic EQ with built-in and custom presets
- Crossfade between tracks
- Replay Gain (track + album mode)
- Gapless playback (experimental)
- MilkDrop/Butterchurn visualizer
- Waveform seekbar
- Last.fm scrobbling, Now Playing & love/unlove (beta)
- Similar Artists via Last.fm, filtered to library
- Statistics — Last.fm top charts & recent scrobbles
- Multi-server support
- IndexedDB image caching
- Random Mix with keyword filter & Super Genre mix
- 21 themes: Catppuccin, Nord, Retro (Gruvbox), Tokyo Night, Psysonic originals (Classic Winamp, Poison, Nucleo, Psychowave)
- Internationalization (English, German, French, Dutch)
- AUR package (Arch / CachyOS)
🚧 In Progress
- Last.fm integration — stabilising, moving out of beta
- Gapless playback — edge case stabilisation
- 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 page and download the installer for your operating system.
- Windows:
.exeor.msi - macOS:
.dmg(Universal or Apple Silicon) - Linux (Ubuntu/Debian):
.debfrom GitHub Releases - Linux (Fedora/RHEL):
.rpmfrom GitHub Releases - Linux (Arch/CachyOS): AUR —
yay -S psysonicorparu -S psysonic
The AUR package builds from source using your system's own WebKitGTK — no bundled libs, no EGL/Mesa compatibility issues.
🚀 Getting Started
- Download and install Psysonic.
- Open the app and enter your Subsonic/Navidrome server details (URL, Username, Password).
- 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.
- Enjoy your music!
🛠️ Development
If you want to build Psysonic from source or contribute to the project:
Prerequisites
- Node.js (v18+)
- Rust (v1.75+)
- OS-specific build dependencies for Tauri (see the Tauri prerequisites guide).
Setup
# 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.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - 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.
