rox

If Foobar2000 was made in the current year.

A desktop music player for people with large, carefully tagged local libraries. You build the panels yourself, and a theme is one file you can hand to someone else. Native on Linux, macOS and Windows.

Download rox

On Arch or NixOS? Install it from the AUR or the Nix flake instead.

v1.26.4 · Linux, macOS, Windows · all downloads

Under a second to a window

rox ships as one binary and starts before you've let go of the mouse.

Startup, memory and idle CPU across seven music players on one 50,000-track library
PlayerWindow upFully loadedMemoryIdle CPU
rox0.3 s2.3 s 134 MB 0.5%
Elisa0.7 snever settles 206 MB 74%
fooyin0.3 s18 s 364 MB 0%
Quod Libet-19 s 384 MB 0.2%
Strawberry0.3 s32 s 434 MB 0.8%
Museeks-3 s 436 MB 0%
Tauon8.7 s12 s 2.8 GB 0%

I measured all of these myself, on one machine (Ryzen 9 5950X, Linux/Wayland) with the same 50k-track library on an external SSD, every player through the same harness with its library loaded. Memory is PSS across the full process tree. "Loaded" is when CPU settles after launch; idle is a paused player with the window visible. DeaDBeeF would have sat at 44 MB and won on memory, but it never got a row: its MP3 parser segfaults partway through importing this library, every attempt. rox indexes all 50,000 tracks, including the truncated files that trip it.

What's in it

Library

A library that holds up

A parallel scanner reads full tags, true durations and each file's own codec, not a header skim. Folder watching survives renames, and nothing drops silently.

What breaks at 50,000 tracks

Tagging you can trust

A full editor with atomic writes, batch edits and find and replace. Ratings live in the files themselves via FMPS and POPM. Lookup through MusicBrainz, iTunes and Deezer.

Next to Mp3tag

Cue rips play like tracks

A whole-disc FLAC beside its cue sheet indexes as real rows. Each span seeks, scrobbles, sorts and runs into the next one gaplessly, the way a file does.

How the spans work

Playback

Gapless playback

One stream, with shuffle, repeat, play-next and A-B repeat. Bookmarks drop with one key and sit on the seek strip. Media keys and now-playing work on all three platforms.

Ten bands and bit-perfect

An equalizer in a window of its own, crossfade that leaves an album's own splices alone, and exclusive output that says what the hardware agreed to.

ReplayGain and bit-perfect

Sorted by how it sounds

rox describes your tracks off their own audio, tempo included, and orders what's next by resemblance. It runs on your machine against your files, no service in the loop.

Looks

Panels you compose

Forty-odd panel types, from library and queue to artist grids, spectrum and VU. Duplicate one with its config, save it as a preset, or pop it out into a window.

Next to Foobar2000

Themes as shareable files

A workspace is one file carrying layout, palette, appearance and shaders. Palettes can tint from the playing cover, going light or dark with the art.

The eight in the box

Visuals that listen

Write a WGSL shader over one panel or the whole window, or run Milkdrop presets through projectM. Named signals off the spectrum ride the shader inputs.

Shaders and signals

Day to day

Lyrics and history

Synced or plain, from sidecar files, tags or lrclib, with an editor that writes back where it read. A listen log drives the history panel, stats and scrobbling.

Playlists that survive

Favourites, drag reorder, M3U, PLS and XSPF in and out, and smart playlists that re-run a saved query rather than hold a snapshot. Entries survive a file leaving and returning.

One binary, no installer

A tarball, a DMG or a zip, plus the AUR and a Nix flake. Portable mode keeps the library and settings in a folder beside the executable.

Get it

Beyond the window

A socket, not a server

JSON-RPC over a local socket: transport, queue edits, library search and pushed events. Auth is file permissions, nothing listens on a port.

What you can build on it

The player as MCP tools

A proxy beside the app puts the socket on MCP, so an AI client can ask what's playing or work the deck. Off by default, rechecked every call.

Streams out to Icecast

A source client pushes what rox plays as MP3 at your mount. Outward only: the network face is Icecast's, and a dead server never stalls playback.

Make it yours

There are eight workspaces in the box, one click away on the welcome window. Each one is a single file carrying the layout, the palette and the shaders it runs, so you can edit it, break it, and hand it to someone else. See them all.