io.github.htkhiem.Euphonica Euphonica MPD client with delusions of grandeur Huynh Thien Khiem https://github.com/htkhiem/euphonica/issues https://github.com/htkhiem/euphonica CC0-1.0 GPL-3.0-or-later pointing keyboard touch

Euphonica is an MPD client with integrated spectrum visualiser, metadata downloading & more.

  • Responsive GTK4 LibAdwaita UI for most MPD features, from basic things like playback controls, queue reordering and ReplayGain to things like output control, crossfade and MixRamp configuration
  • Automatically fetch album arts, artist avatars and (synced) song lyrics from external sources (currently supports Last.fm, MusicBrainz and LRCLIB). All external metadata are cached locally & persisted on disk to avoid needless API calls.
  • Playlist browser and editor
  • Integrated MPRIS client with background running supported (via the XDG Background protocol).
  • Built-in, customisable spectrum visualiser, reading from MPD FIFO or system PipeWire.
  • Rate albums (requires MPD 0.24+)
  • Live bitrate readout + audio quality indicators (lossy, lossless, hi-res, DSD) for individual songs as well as albums & detailed format printout
  • Browse your library by album, artist and folders with multiselection support. Browsing by genre and other criteria are planned.
  • Sort albums by name, AlbumArtist or release date (provided you have the tags)
  • Asynchronous search for large collections
  • Configurable multi-artist tag splitting
  • Performant album art fetching & display (cached with Stretto)
  • Super-fast, multithreaded, statically-cached background blur powered by libblur
  • 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.

PipeWire permissions

Euphonica requires PipeWire capture permissions for its PipeWire visualizer backend, but currently it is only possible to specify a "blanket" PipeWire permission that also allows screen recording, microphone access, etc. Euphonica does not make use of these extra permissions, and will be updated to use a more restricted "audio portal" when one becomes available.

Screenshot content copyright information & disclaimer

Album arts contained in the screenshots have been substituted with random photos from Pexel. All credits go to the original authors.

Euphonica is solely a music player programme and does not provide any media content or sources. Users must provide their own content or manually configure Euphonica to access third party online services.

io.github.htkhiem.Euphonica.desktop https://i.ibb.co/ZztBGwWp/Screenshot-From-2025-07-23-20-36-09.png Recent View https://i.ibb.co/27g2D2Ph/Screenshot-From-2025-07-23-20-49-49.png Album View https://i.ibb.co/DHtsRQB9/Screenshot-From-2025-07-23-20-46-02.png Album Content View https://i.ibb.co/zTSZhPMp/Screenshot-From-2025-07-23-20-42-43.png Playlist Content View https://i.ibb.co/fGxfq60N/Screenshot-From-2025-07-23-20-40-22.png Artist Content View https://i.ibb.co/84bYWgJF/Screenshot-From-2025-06-21-20-15-05.png Queue View https://github.com/htkhiem/euphonica/releases/tag/v0.97.2-beta

New: in-app theme selector (follow system style, force light, force dark).

Refactor: queuing is now done in the background to avoid freezing UI when adding lots of tracks.

Refactor: incremental queue updates are now fully asynchronous and paged to avoid blocking UI and reduce stress on MPD server.

Fix: various folder view bugs.

Fix: album wiki & artist bio text still showing those of prior albums/artists when the current one does not have one.

Fix: albums of the same name getting merged together.

https://github.com/htkhiem/euphonica/releases/tag/v0.97.1-beta

New: Option to re-fetch metadata. Will also re-attempt artist avatar fetching.

Refactor: Basic album/artist info is now shown early instead of being hidden until external wiki loads.

Fix: Repeated inits causing duplicate albums and artists after exiting background mode.

Fix: Album wiki text and artist avatars not loading.

Fix: Consume mode resetting on new window opens.

Fix: Sorting now prefers *sort tags before normal ones.

https://github.com/htkhiem/euphonica/releases/tag/v0.97.0-beta

New: Global background task counter and spinner.

Refactor: Lazy init for all views, should markedly improve startup smoothness.

Refactor: Switched to libsecret to manage MPD password. Will require reentering your password if you use one.

Refactor: Add more padding to Recent View row separators.

Fix: Many timeout-related crashes. Euphonica will now automatically attempt a reconnection instead.

Fix: Playlist editor apply button remaining disabled after one edit.

https://github.com/htkhiem/euphonica/releases/tag/v0.96.4-beta

New: Clicking on a (synced) lyric line will seek to its timestamp.

Refactor: Many performance improvements to queue operations.

Refactor: MPRIS play command now starts playing again from the last-played track in the queue while in the stopped state.

Fix: Crash when newlines are included as artist tag delimiters and there are UTF-8 characters.

Fix: Crash caused by the PipeWire visualiser backend when changing tracks via MPRIS (including playerctl).

Fix: Volume knob not reflecting remote changes.

Fix: Empty album and artist tags are now properly included in the Album and Artist views.

https://github.com/htkhiem/euphonica/releases/tag/v0.96.3-beta

New: Lyrics import, export and clear features.

New: PipeWire visualiser backend can now select specific devices to capture audio from.

Fix: Seekbar occasionally not updating itself.

Fix: album arts not falling back to embedded art automatically in Album View.

Refactor: PipeWire visualiser backend's autoconnection should now be smarter.

https://github.com/htkhiem/euphonica/releases/tag/v0.96.2-beta

Fix: Hangups and performance issues on larger libraries.

Fix: Crash trying to queue inaccessible song files (will show a toast instead).

Fix: Artists and albums with the same names using each other's images. NOTE: existing artist avatars will have to be re-downloaded or set again after this update.

https://github.com/htkhiem/euphonica/releases/tag/v0.96.0-beta

New: Recent View. Shows recently-played albums, artists and songs. History can be paused and cleared.

New: Animated marquees for long album titles in grid views. Exact behaviour is customisable (wrap/ellipsise/marquee-scroll on hover).

New: "Queue Next" option that inserts selected songs after the current song in the queue. Currently available in the album content view only.

New: Artist names in the album content view are now clickable (opens the corresponding artist content view).

Fix: Current song position in queue desynced from daemon.

Fix: Crash after deleting cached images from .cache/euphonica

Fix: Embedded art still being downloaded even with folder cover present

Refactor: Updated to build against GTK 4.18 and LibAdwaita 1.7+

https://github.com/htkhiem/euphonica/releases/tag/v0.95.2-beta

Fix: crash on systems without XDG Background support.

https://github.com/htkhiem/euphonica/releases/tag/v0.95.1-beta

Fix: crash on duplicate metadata tags.

Fix: crash after exiting artist content page.

https://github.com/htkhiem/euphonica/releases/tag/v0.95.0-beta

New: Embedded track arts are now globally supported as fallback in case no cover image file is present in the folder. This also allows tracks in certain albums to have their unique album arts shown.

New: Double-clicking on a song in an album content page will now replace the current queue with it.

Fix: MPRIS client remaining active even when disabled (#73).

Fix: GTK warnings related to QueueRows. Widgets are now disposed of more properly too.

Fix: Crash upon loading cover art for albums/artists with extremely long names (#67).

Fix: Crash on startup with some keyring configurations (#76).

https://github.com/htkhiem/euphonica/releases/tag/v0.94.1-alpha

Fix: metadata cache thread panicking on invalid album tag information.

https://github.com/htkhiem/euphonica/releases/tag/v0.94.0-alpha

New: Local socket connection support. This also opens up MPD capabilities only available via local sockets, such as configuration editing.

Refactor: Folder view state is now preserved across window launches (when background running is enabled)

Fix: "Queue all" button in playlist content view queuing twice.

Fix: Queue View & Playlist Editor resetting scroll position upon removing a track.

Fix: Queue View subtitle not updating upon clearing queue.

Fix: Connection error popups now work again.

https://github.com/htkhiem/euphonica/releases/tag/v0.93.1-alpha

Fix: MPRIS duration using the wrong unit, causing seekbars in shell applets to malfunction.

https://github.com/htkhiem/euphonica/releases/tag/v0.93.0-alpha

New: Synced lyrics! Currently fetching from LRCLIB and enabled by default. Plain lyrics will be fetched if no synced version is available. If multiple lyrics entries are available for a song, the one whose stated duration is closest to your local file will be used. You may also turn lyrics fetching off in the Integrations menu as usual.

Fix: Sidebar not updating itself to highlighting Queue View when the "jump to pane" button (only visible in mini-bar mode) is clicked.

https://github.com/htkhiem/euphonica/releases/tag/v0.92.0-alpha

New: Background mode. Euphonica can now run in the background, allowing it to serve as your MPRIS daemon. Visualisation backends and album art blur thread will be shut down upon entering background mode, reducing CPU usage to pretty much zero. Polling will still be performed to support shell applets with seekbars (GNOME does with an extension).

New: Command-line argument to start Euphonica minimised (--minimized). This allows setting up autostart scripts.

Fix: Playback controls are now properly centered instead of being forced to the right by long titles (which will scroll like a marquee instead).

Fix: Album info and artist bio spinners not going away in case no metadata could be found.

https://github.com/htkhiem/euphonica/releases/tag/v0.91.0-alpha

New: Cache size report and open button in Library preferences tab.

Fix: Bottom bar playback control buttons not centering themselves vertically when seekbar is hidden.

https://github.com/htkhiem/euphonica/releases/tag/v0.90.4-alpha

Fix: child client getting clogged on cold-starts by one-time tasks such as album art downloading.

https://github.com/htkhiem/euphonica/releases/tag/v0.90.3-alpha

From this version onwards we are targeting a v1.0 release, hence the version bump.

This version introduces support for matching app accent colour to currently-playing song's album art, and a big revamp of the offline cache mechanism.

  • New: album rating system using myMPD-compatible tag schema (requires MPD 0.24+).
  • New: Optional capabilities UI with instructions on how to enable them for your MPD instance.
  • New: UI with album-art-matching accent colour support, wider seekbar, and live bitrate readout.
  • New: Setting custom images as album arts and artist avatars are now supported.
  • Refactor: Replaced PoloDB with plain ol' SQLite - easier to inspect, composite indices are supported, etc. Actual metadata docs are still BSON blobs, but since they're only BSON when stored, BSON is now much less prevalent in our cache code. Also, I took this chance to significantly cut down on string clones.
  • Refactor: Replaced murmur2 hashing of URIs with simple base64url encoding. This also does what we need (avoiding special chars) but never collides and is completely reversible.
  • Refactor: Added loading spinners to artist bio, artist discography/songs subviews, album wiki and album content.
  • Fix: Fixed spectrum equaliser "lifting off" from the window's bottom edge when smooth curves drawing (default) is enabled.
https://github.com/htkhiem/euphonica/releases/tag/v0.12.0-alpha

PipeWire visualiser backend, fully adaptive UI and initial Flatpak release.

  • New: Visualiser can now read from the current PipeWire audio stream (only way to visualisation inside Flatpak)
  • Refactor: UI rearrangements at smaller window sizes down to 360x640 for smartphone compatibility
  • Refactor: Visualiser backend has been refactored to allow hot-switching between data sources.
  • Fix: Slowdowns/stuttering upon startup or large changes to the queue.
  • Fix: Long wait times in content views after cold startup in extreme cases. We now have a second high-priority background task queue for user-initiated background tasks.
  • Fix: Multiple download attempts sent to MPD for the same album art.
https://github.com/htkhiem/euphonica/releases/tag/v0.11.0-alpha

First public tagged release for Euphonica.

  • New: customisable spectrum visualiser (reads from MPD FIFO output)
  • Refactor: preferences panel reorganisation
  • Fix: crash when connecting without a prior password entry in keyring
#99c1f1 #0a3162