A Winamp-style music player and MediaMonkey-style library manager for Omarchy and Hyprland.
Why Thrum · Tour · Install · Quick start · Keys · Guides · Status
Every picture here is the real app, drawn offscreen with a made-up library. They follow GitHub's light or dark mode, as Thrum follows the Omarchy theme.
Thrum is built for Omarchy first. Every colour comes from the current Omarchy
theme and changes the moment the theme does, window corners match Hyprland's,
and the media keys, playerctl and the Omarchy bar all control it. It is
driven from the keyboard, installs as an Arch package, and runs on any Linux
desktop, but Omarchy is where it looks right.
Underneath is a library manager in the spirit of MediaMonkey, for people with big collections who care about their tags. It has a library tree, a column browser, a tag editor with undo, file organising with a preview, auto-playlists, duplicate finding, MusicBrainz tagging, and libraries that live on a NAS or a Navidrome server.
On top sits Winamp's soul: a green clock, a bouncing analyser, a scrolling title and Winamp's own keys. Internet radio and Spotify sit beside your own files, so one playlist can hold a FLAC from your shelf, a Spotify track and a Nightride FM channel.
The player is a Winamp 2–style deck with the playing track's cover. Tab
switches to the library, and the menu bar across the top shows every command
with its key.
|
|
Press Tab for the library: a tree on the left, a column browser of genres,
album artists and albums, the tracks or an album grid, and a sidebar with the
cover, lyrics, notes about the artist and the album, credits and what plays
next. Search takes plain words or a query such
as artist:"neon coast" year:1990..1999 rating:4.., and stays quick with
200,000 tracks.
The library is laid out the way you like it. A small cover starts each row of every track list; rows come compact, comfortable or large, and columns move when you drag their headers. The sidebar's sections fold, hide and change order. The now playing bar can be the slim strip or a large bar like Spotify's, at the top or the bottom, with a visualiser behind its seek bar, behind the whole bar (fading out to its ends), along its edge or beside the cover, in any of twelve styles. A waveform button beside every visualiser opens a picker with a live preview of each style. Settings → Appearance → Layout has all of it, and Reset layout puts it back. The sidebar is on unless you switch it off. See docs/library.md.
N opens the big view: the cover, the rating, what's next, timed lyrics and a
visualiser, with F11 for fullscreen. Ctrl+M and Ctrl+Shift+M shrink
Thrum to a mini player or to Winamp's windowshade.
Edit the tags of one track or a hundred, rename and move files by a mask with a preview of every change, fill tags from file names, and identify albums with MusicBrainz. Every change can be undone. Files to Edit lists the tracks with missing or inconsistent tags, and the duplicate finder can match an MP3 and a FLAC of the same recording by how they sound.
Playlists, auto-playlists that update themselves, collections, Auto-DJ and party mode. With Spotify switched on, a playlist can hold Spotify tracks beside your own files; they play on Spotify when their turn comes.
Your Spotify playlists, Liked Songs, saved albums, followed artists and search sit in the library tree. Choose several tracks and play them, queue them, or add them to a Thrum or a Spotify playlist. Thrum never sees your Spotify password: it drives spotify_player, which keeps its own sign-in. Playing needs Spotify Premium.
Every Nightride FM and Rekt Network channel is built in, each showing the song
on air now. Shift+R opens the picker and [ ] change channel. Any other
station can be found on radio-browser.info or added by its address.
A bar plugin shows a small cover, the play state and the track. Click it for a panel led by a large cover, with seek, transport, shuffle, repeat and volume.
There is more in the guides: device sync to a phone, a USB drive or a Syncthing folder, reports as CSV or a web page, NAS and Navidrome libraries, and the MediaMonkey import.
Coming from Omamp? Thrum is the same player under a new name. Quit Omamp, then start Thrum: it moves your library, settings and cache over on its first start. The 0.4.0 notes list the few things to change by hand (the bar widget, Hyprland rules, scripts).
Thrum is not in the AUR yet; the package files are ready in aur/. For now, build it from source on Arch or Omarchy.
-
Install what it builds against:
sudo pacman -S --needed base-devel qt6-base qt6-declarative qt6-multimedia qt6-wayland \ taglib sqlite ffmpeg pkgconf ttf-jetbrains-mono-nerd -
Clone it and install it, either as a package or into your home folder:
git clone https://github.com/matt-shearing/thrum.git cd thrum bin/install # builds an Arch package and installs it (asks for sudo) bin/install-user # or: installs into ~/.local, no sudo
Thrum then appears in the app launcher (
Super + Space). -
Optional extras:
- The bar plugin:
omarchy-plugin/install, thenomarchy-restart-shell. See its README. - Spotify:
omarchy-pkg-add spotify-player. The build also makes a small helper,thrum-spotify-session, when Rust'scargois installed; it reads the playlists Spotify makes and artists' top tracks. chromaprintfinds duplicates by sound,libsecretkeeps NAS and Navidrome passwords in the keyring, andxdg-desktop-portalgives the file pickers.
- The bar plugin:
- Open Thrum. The first time, a short setup walks you through where
Thrum starts, the player's look and visualiser, the library's layout and
your music. Each choice shows in the window as you pick it, and Help →
Run setup again… brings it back later. Thrum also adds
~/Musicto the deck. Drop files or folders on the window, or pressOto add a folder. - Open the library with
Tab, View → Library, or the Library button on the deck. Choose Add folder… to add your music folders. The scan runs in the background, with its progress and a Cancel button in the status line. - Find things with the search box (
/), the column browser (Ctrl+B), the album grid (G) or the command palette (Ctrl+K). - Spotify: open Settings → Spotify, switch on Show Spotify in Thrum, and press Sign in…. Spotify limits how often a shared app may ask, so lists can be slow; your own Spotify client ID takes five minutes to set up and fixes most of it.
- Radio: press
Shift+Rand pick a Nightride FM channel.
Thrum keeps Winamp's keys and adds its own. These are the ones to learn
first; docs/keys.md has them all, and ? shows them in the
window.
| Key | Does |
|---|---|
Space |
Play or pause |
Z X C V B |
Previous, play, pause, stop, next |
Tab |
Switch between the deck and the library |
N |
The big Now Playing view |
Shift+V |
Next visualiser style; the waveform button by each visualiser shows them all |
Ctrl+M / Ctrl+Shift+M |
The mini player / the micro player |
/ |
Search the library |
Ctrl+K |
The command palette |
Ctrl+E |
Edit the tags of the chosen tracks |
Ctrl+Z |
Undo the last tag edit or organise |
Shift+R |
Internet radio |
? |
Every key |
The library also works from a terminal, sharing one library with the window.
Every command takes --json for scripts.
thrum scan ~/Music # add a folder and scan it
thrum query 'artist:"neon coast" rating:4..'
thrum radio play darksynth # tune the running Thrum in
thrum sync run Phone --dry-run # what a sync would copy, convert and deletedocs/command-line.md lists the commands, and
thrum help prints them all.
| Guide | What it covers |
|---|---|
| The library | Getting around, the library window, tags, organising, Files to Edit and duplicates |
| Keys | Every key, in the deck and the library |
| Command line | The thrum commands, for people and scripts |
| Now playing | Covers, the big view, the mini players, visualisers and deck styles |
| Query language | Searches and auto-playlists |
| Masks | File names and folders for organising, and tags from file names |
| Playlists | Playlists, mixed playlists, auto-playlists, collections, statistics, Auto-DJ and party mode |
| Web metadata | MusicBrainz, covers, lyrics and scrobbling, and what leaves your machine |
| Music on a NAS | SMB and NFS shares, Navidrome, and what happens when the NAS is off |
| Device sync and reports | Copying to a phone, a USB drive or Syncthing, and CSV or web-page reports |
| Internet radio | Nightride FM, other stations, and song names |
| Spotify | Signing in, your own client ID, and what Spotify allows |
| MediaMonkey import | Bringing ratings, play counts, history and playlists across |
| The bar plugin | The Omarchy bar widget and its settings |
What changed in each release is in CHANGELOG.md, and the plan and the detailed progress log are in docs/plan/.
Thrum is young (0.4.0) and changes quickly. It has a large automated test
suite (bin/test), but the tests run against made-up music, pretend web
services and simulated network shares. Some things have not been tried for
real yet:
- Big real libraries. Speed was measured on 200,000 generated tracks, not on a real collection.
- A real NAS and a real Navidrome server. Both were tested against stand-ins.
- The MediaMonkey import has never been run on a real MediaMonkey database.
- Device sync has not been tried on a real phone or a real Syncthing folder.
- Spotify was tested against a pretend spotify_player. Playing needs Spotify Premium (a Free account can browse and search), and gapless joins, crossfade, the equaliser and the visualiser work only on your own files.
- The native engine (gapless playback, crossfade, ReplayGain and the equaliser) is still marked experimental; Qt Multimedia plays by default.
- English only for now, though every string is ready for translation.
- Last.fm needs your own API key; Thrum doesn't ship one.
If something breaks, please open an issue.
Thrum is MIT-licensed. Theme following and the project layout come from Omacut and Monologue by David Heinemeier Hansson, also MIT.
Spotify works through spotify_player, and the session helper, which also decodes the Spotify tracks Thrum plays itself, is built on librespot (MIT). The radio channels are Nightride FM's and the Rekt Network's; Thrum plays their public streams.
Thrum is inspired by Winamp and MediaMonkey, and is not affiliated with either, nor with Spotify or Nightride FM.














