Your music server, native and fast. Fastpotify is a small desktop client for Navidrome and compatible OpenSubsonic servers. It is written in Rust with egui, runs on Linux, macOS, and Windows, and has no embedded browser engine.
See fastpotify.rocks for installation, setup, everyday use, and connection details.
- Local playback. Stream from the active server with play, pause, seek, next, previous, shuffle, repeat, volume, and output-device controls. Windows also offers an output-buffer control.
- Authoritative local queue. Manually queued songs play before the current album or playlist. Duplicate occurrences remain distinct, and stale stream or decoder work cannot roll the queue back.
- Library and search. Browse artists, albums, playlists, and favorites; search songs, artists, albums, and playlists on the server.
- Personalized mixes. Home cards open a daily mix weighted by listening frequency, favorites, genres, and artists, plus a server-backed Random mix that can be refreshed without interrupting playback. A Random mix started from its page asks the server for another batch when three of its own songs remain to play, then appends them without disturbing the current or manually queued songs. It repeats that check while the server keeps returning songs.
- Playlist editing. Create, rename, describe, add/remove songs, drag rows into a new order, and delete. Reordering replaces the complete ordered song list in one OpenSubsonic request, preserving duplicate occurrences.
- Optimistic interactions. Playing, queueing, and favorite changes appear immediately while backend work catches up.
- Album-art color, light/dark/system themes, keyboard shortcuts, tray playback, and desktop media controls.
- Winamp mini player. Classic
.wszskins, spectrum analyser, oscilloscope, playlist, and ten-band equalizer. Visualizers receive the signal after EQ and before volume, so zero volume still dances.
Fastpotify intentionally does not present Navidrome Jukebox or saved play queues as remote speaker control. The initial local pipeline does not claim gapless playback, loudness normalization, or an on-disk audio cache.
On Arch Linux:
yay -S fastpotify-binOn macOS with Homebrew:
brew install --cask crmne/tap/fastpotifyOr build the repository with its pinned Rust toolchain:
cargo install --path .Linux also needs the GUI and audio development packages. On Arch:
sudo pacman -S --needed alsa-lib libpulse libxkbcommon waylandOn Debian or Ubuntu:
sudo apt install libasound2-dev libpulse-dev libxkbcommon-dev libwayland-dev libgl1-mesa-devnix develop provides the repository toolchain and native dependencies.
Enter the Navidrome/OpenSubsonic base URL, username, and password in the app. Fastpotify verifies the account and server capabilities before saving it. Use HTTPS outside a network you fully trust.
The credential lives separately from settings in the platform state directory and is owner-only on Unix. API requests use a fresh salted token; passwords and authenticated URLs never enter media references, artwork cache keys, logs, or desktop-control metadata. See How It Connects.
| Shortcut | What it does |
|---|---|
Space |
Play or pause |
Ctrl+← / Ctrl+→ |
Previous or next |
Shift+← / Shift+→ |
Seek 10 seconds |
Ctrl+↑ / Ctrl+↓ |
Volume |
M |
Mute |
S / R |
Shuffle / cycle repeat |
Q |
Queue panel |
Ctrl+F or / |
Search |
Ctrl+B |
Show or hide the sidebar |
Alt+← / Alt+→ |
Back or forward |
Ctrl+H / Ctrl+L |
Home / Favorites |
Ctrl+Shift+A / Ctrl+Shift+B |
Playing artist / album |
Ctrl+M (Cmd+Shift+M on macOS) |
Winamp mini player |
Ctrl+, |
Settings |
Ctrl+/ or ? |
All shortcuts |
Ctrl+Q |
Quit |
On macOS, Cmd replaces Ctrl where appropriate.
Linux exposes MPRIS, so playerctl --player=fastpotify play-pause works.
On macOS and Windows, subcommands control the running instance:
fastpotify play-pause fastpotify volume 40
fastpotify play fastpotify volume-up 10
fastpotify pause fastpotify volume-down 10
fastpotify next fastpotify mute
fastpotify previous fastpotify shuffle on
fastpotify seek 15 fastpotify repeat context
fastpotify seek -- -15 fastpotify favorite
fastpotify seek-to 90 fastpotify play-ref <fastpotify:...>
fastpotify show fastpotify now-playing --raw
play-ref and MPRIS OpenUri accept only canonical, secret-free Fastpotify
media references.
Preferences remain in the existing Fastpotify application directories so an upgrade keeps themes, layout, shortcuts, and Winamp skins. Server credentials are in state, while artwork and lyrics are disposable caches. Session and history files are scoped to a non-secret server/user profile fingerprint. Settings are grouped into Account, Playback, Appearance, Winamp skins, Equalizer, Storage, and About, with a category rail on wide windows and a wrapped selector on compact ones. See Settings & Files.
src/api/: OpenSubsonic wire DTOs, provider-neutral domain models, authentication, metadata, artwork, and stream requests.src/player.rs: local authoritative queue, bounded streaming, decode generations, and playback state.src/sink.rs,src/eq.rs,src/vis.rs: output, EQ, and the post-EQ, pre-volume visualizer tap.src/backend.rs: async runtime and UI channels.src/app.rs,src/model.rs,src/ui/: state, optimistic actions, navigation, and views.
The UI thread never performs network or playback work.
Demo mode renders deterministic sample data without connecting to a server:
cargo run --features demo -- --demo --demo-page playlist:pl1 --demo-show queue--demo-shot <PATH> writes a screenshot. Contribution checks and product
boundaries are in CONTRIBUTING.md.
Fastpotify uses egui, Symphonia, the Inter typeface (OFL), and Lucide icons (ISC).
Licensed under the MIT License.
