An MPD frontend with delusions of grandeur.
It exists to sate my need for something that's got the bling and the features to back that bling up.
- Adaptive GTK4+
libadwaitaUI for most MPD features, from queue reordering and ReplayGain to crossfade and MixRamp configuration. - Practically zero-cost static background blur powered by libblur. Go ham with blur radius!
- Customisable spectrum visualiser, reading from MPD FIFO or system PipeWire.
- Automatic accent colours based on album art (optional).
- Advanced client-side dynamic playlists.
- Both query-based and sticker-based filtering rules are supported at the same time.
- Multiple ordering clauses (or random shuffle on refresh).
- Auto-refresh scheduling (hourly, daily, weekly, etc).
- Optional fetch limit for things like top-10 playlists.
- Graphical rules editor with live error checking.
- Save a dynamic playlist's current state as an MPD-side static playlist whenver you want.
- JSON import/export for sharing & backing up dynamic playlist rules.
- Fetch album arts, artist avatars and synced song lyrics from external sources (currently supports Last.fm, MusicBrainz and LRCLIB).
- myMPD-compatible stickers handling.
- Integrated MPRIS client with background run supported. The background instance can be reopened via your shell's MPRIS applet, the "Background applications" section in GNOME's quick settings shade (if installed via Flatpak) or simply by launching Euphonica again.
- Rate albums (requires MPD 0.24+) and individual songs.
- Audio quality indicators (lossy, lossless, hi-res, DSD) for individual songs as well as albums & detailed format printout.
- Asynchronous search for large collections. The app as a whole should work with any library size (tested with up to 30K songs).
- Configurable multi-artist tag syntax, works with anything you throw at it.
- In other words, your artist tags can be pretty messy and Euphonica will still be able to correctly split them into individual artists.
- Performant album art fetching & display (LRU-cached to both cut down on disk reads and RAM usage).
- Volume knob with dBFS readout support ('cuz why not?).
- User-friendly configuration UI & GSettings backend.
- MPD passwords are securely stored in your user's login keyring.
- Commands are bundled into lists for efficient MPD-side processing where possible.
The below were captured with a mix of dark and light modes.
-
Album View1

-
UI at different sizes1

-
Queue View1

-
Dynamic Playlist Editor1

-
Settings GUI for pretty much everything1

Euphonica is still in very early development, and so far has only been tested on Arch Linux (btw).
The preferred way to install Euphonica is as a Flatpak app via Flathub:
Other ways to install Euphonica are listed below:
An (admittedly experimental) AUR package is now available.
# Use your favourite AUR helper here
paru -S euphonica-gitThe Nix package is kindly maintained by @paperdigits here.
# NixOS configuration
environment.systemPackages = [
pkgs.euphonica
];
# For standalone Nix, without flakes:
nix-env -iA nixpkgs.euphonica
# With flakes:
nix profile install nixpkgs#euphonicaEuphonica requires some preparation before it can be used, especially if you have never used an MPD client before. Please see the wiki article for instructions on setting up a basic local instance.
Euphonica can also be built from source using flatpak-builder.
This builds and installs Euphonica as a sandboxed Flatpak app on your system, complete with an entry in Flatpak-aware app stores (like GNOME Software, KDE Discover, etc). It should also work on virtually any distribution, and does not require root privileges. Unlike installing from Flathub, this always builds the latest commit and as such is more suitable for development and testing purposes. Also, it might overwrite the existing Flathub-distributed installation in case you have one.
- Add the Flathub repo in case you haven't already:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo- Run
flatpak-builderas follows:
cd /path/to/where/you/cloned/euphonica
flatpak-builder --force-clean --user --install-deps-from=flathub --repo=repo --install build-flatpak io.github.htkhiem.Euphonica-dev.json- Once the above has completed, you can run Euphonica using:
flatpak run io.github.htkhiem.EuphonicaA desktop icon entry should also have been installed for you, although it might take a reboot to show up.
This builds Euphonica against system library packages, then installs it directly into /usr/local/bin.
It is the most lightweight option, but has only been tested on Arch Linux.
-
Make sure you have these dependencies installed beforehand: -
gtk4>= 4.18 -libadwaita>= 1.7 -meson>= 1.5 -gettext>= 0.23 -mpd>= 0.24 (Euphonica relies on the new filter syntax and expanded tagging) -sqlite(metadata store dependency) - Anxdg-desktop-portalprovider - The latest stable Rust toolchain. I highly recommend usingrustupto manage them. Using it, you can install the latest stable toolchain usingrustup default stableor update your existing one withrustup update. Ensure thatrustcandcargoare of at least version1.88.0.If you are on Arch Linux,
gettextshould have been installed as part of thebase-develmetapackage, which also includesgit(to clone this repo :) ). -
Init build folder
cd /path/to/where/to/clone/euphonica
git clone https://github.com/htkhiem/euphonica.git
cd euphonica
git submodule update --init
meson setup build --buildtype=release- Compile & install (will require root privileges)
cd build
meson install- Make client code fully async
- User-editable album wikis and artist bios
- Metadata sync between Euphonica instances (instead of being stored locally)
- Local socket-exclusive features:
- Library management operations such as tag editing (will require access to the files themselves)
- Save downloaded album arts and artist avatars directly into the music folders themselves so other instances and clients can use them.
- Browse by genre
- An "All tracks" page with advanced, freeform querying to take full advantage of MPD v0.21+'s new query syntax
