Releases: b0bbywan/mpd2mpris
v0.12.0
v0.12.0: mpDris2 is now mpd2mpris
✨ What's new
This release renames the project from mpDris2 to mpd2mpris. After the asyncio + dbus-fast rewrite this fork no longer shares code with the original mpDris2, so, in agreement with its maintainer, it gets its own name to avoid confusion and give users and distributions a clear choice. It's a drop-in replacement for the old mpdris2 package (same project, new name), not something you run alongside the original: both expose MPD under the same MPRIS bus name, so only one can own it at a time. No feature changes, same MPRIS 2 D-Bus bridge for MPD, powering the odio streamer (b0bbywan/odios).
The MPRIS bus name
org.mpris.MediaPlayer2.mpdis unchanged.playerctl, media keys and desktop applets keep working exactly as before, nothing to reconfigure on the client side.
Install:
curl -fsSL https://apt.odio.love/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" \
| sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update
sudo apt install mpd2mprisEnable (D-Bus activated, default):
The shipped systemd user unit is Type=dbus with a matching D-Bus service file, so mpd2mpris auto-starts on the first MPRIS call (playerctl, a media key, a desktop applet, …). No manual enable required.
Enable eagerly (optional, run before any client asks):
systemctl --user enable --now mpd2mpris.service🔁 Renamed
- Package (APT + PyPI):
mpdris2→mpd2mpris. - Executable:
mpDris2→mpd2mpris. - systemd user unit:
mpDris2.service→mpd2mpris.service. - Config dir:
~/.config/mpDris2/→~/.config/mpd2mpris/(and/etc/mpDris2/→/etc/mpd2mpris/). - Repository:
b0bbywan/mpDris2→b0bbywan/mpd2mpris(old URLs redirect). - Unchanged: the MPRIS bus name
org.mpris.MediaPlayer2.mpdand the D-Bus service file.
⬆️ Upgrading from mpdris2
- The
.debdeclaresConflicts/Replaces/Provides: mpdris2, soapt upgradeswaps the old package for the new one cleanly: the oldmpdris2is removed automatically, no manual step. - Config is picked up automatically: the new
~/.config/mpd2mpris/mpd2mpris.confand/etc/mpd2mpris/...paths win, with the legacy~/.config/mpDris2/...and/etc/mpDris2/...paths kept as a fallback, so existing configs keep working untouched. Rename them at your leisure. - If you had enabled the old unit (
systemctl --user enable mpDris2.service), stop it before installing mpd2mpris:systemctl --user stop mpDris2.servicethen after installsystemctl --user daemon-reload && systemctl --user enable --now mpd2mpris.service.
⚙️ Configuration
- INI config at
~/.config/mpd2mpris/mpd2mpris.conf, falling back to/etc/mpd2mpris/mpd2mpris.confthen the legacympDris2paths. Example template shipped at/usr/share/doc/mpd2mpris/mpd2mpris.conf. - Sections unchanged:
[Connection](host,port,password),[Library](music_dir,cover_regex),[Cover](sources,stream_sources,mympd_uri),[Bling](cdprev). - CLI overrides config:
-H/--host,-p/--port,--music-dir,--config,--use-journal,--no-reconnect,-v/--verbose.
🧹 Packaging
pyproject.tomlnow uses the SPDXlicense = "GPL-3.0-or-later"string (+license-files), dropping the deprecated table form. Build requiressetuptools>=77.- Dropped
Suggests: python3-systemd, vestigial from the original mpDris2. The asyncio rewrite never imports the systemd module (--use-journalonly strips the timestamp prefix from the log format).
🙏 Thanks
- @eonpatapon and the original mpDris2 authors for the amicable rename agreement.
Full changelog: v0.11.1...v0.12.0
What's Changed
v0.12.0-beta.1
Full Changelog: v0.11.1...v0.12.0-beta.1
v0.11.1
v0.11.1 — published to PyPI
Packaging release on top of v0.11.0 of the asyncio + dbus-fast mpDris2, the MPRIS 2 D-Bus bridge for MPD, powering the odio streamer (b0bbywan/odios). No daemon changes: mpDris2 is now on PyPI, so you can pipx install it on any distro without the APT repo or a git checkout.
Install from PyPI (daemon only):
pipx install mpdris2Ships the mpDris2 console script only, no systemd or D-Bus service files. Drop a user unit at ~/.config/systemd/user/mpDris2.service (copy data/user/mpDris2.service) to auto-start it. Optional cover deps: pipx install 'mpdris2[cover]'.
Install from APT (full integration, D-Bus activated):
curl -fsSL https://apt.odio.love/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" \
| sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update
sudo apt install mpdris2The .deb ships the Type=dbus user unit and a matching D-Bus service file, so mpDris2 auto-starts on the first MPRIS call. No manual enable required.
✨ What's new
- Install from PyPI: the daemon is published to PyPI as
mpdris2, installable withpipx install mpdris2on any distro. - Wheel artifact: each GitHub release now attaches a built wheel (
.whl) alongside the existing sdist and.deb.
🏗️ CI / Dev
- Releases publish to PyPI via OIDC trusted publishing, no API token stored in the repo.
- Every
v*tag goes to TestPyPI first; final releases also go to PyPI, while prereleases (rc/beta/alpha) stop at TestPyPI. - Dependabot action bumps:
upload-artifactv6 → v7,repository-dispatchv3 → v4.
Full changelog: v0.11.0...v0.11.1
What's Changed
- Bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #9
- Ci pypi publish by @b0bbywan in #10
New Contributors
- @dependabot[bot] made their first contribution in #9
Full Changelog: v0.11.0...v0.11.1
v0.11.1-beta.1
What's Changed
- Bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #9
New Contributors
- @dependabot[bot] made their first contribution in #9
Full Changelog: v0.11.0...v0.11.1-beta.1
v0.11.0
v0.11.0 — cover-art sources for tagged tracks & web radio
Second stable release of the asyncio + dbus-fast mpDris2, the MPRIS 2 D-Bus bridge for MPD, powering the odio streamer (b0bbywan/odios). This cycle grows the cover-art pipeline from 5 to 7 steps with remote sources for tagged albums and web radio, and trims the daemon down (no more i18n or libnotify).
Install:
curl -fsSL https://apt.odio.love/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" \
| sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update
sudo apt install mpdris2Enable (D-Bus activated — default):
The shipped systemd user unit is Type=dbus with a matching D-Bus service file, so mpDris2 auto-starts on the first MPRIS call (playerctl, a media key, a desktop applet, …). No manual enable required.
Enable eagerly (optional — run before any client asks):
systemctl --user enable --now mpDris2.service✨ What's new
- 7-step cover pipeline: the local resolver (MPD
readpicture→ filesystem regex → MPDalbumart→ CUE/cdda fallback) now hands off to remote sources when nothing local is found. - Remote cover-URL sources for tagged tracks: MusicBrainz/CAA, iTunes, Deezer. Opt-in and prioritised via
[Cover] sources(an ordered list; the order is the lookup priority, unlisted = off). - Web-radio cover sources for
http(s)://streams: Radio Browser station favicon and myMPD WebradioDB, opt-in via[Cover] stream_sources(mympdalso needs[Cover] mympd_uri). - Link, don't re-host: remote steps expose the image URL as
mpris:artUrldirectly. Nothing is downloaded or cached to disk, and the cover cache is gone. - Covers resolved off the critical path: artwork is fetched asynchronously and carried across MPRIS re-emits, so metadata never blocks on a slow lookup.
⚙️ Configuration
- INI config at
~/.config/mpDris2/mpDris2.conf, with/etc/mpDris2/mpDris2.confas fallback. Example template shipped at/usr/share/doc/mpdris2/mpdris2.conf. - Sections:
[Connection](host,port,password),[Library](music_dir,cover_regex),[Cover](sources,stream_sources,mympd_uri),[Bling](cdprev). - The MusicBrainz/CAA source needs the optional
[cover]extra (pip install '.[cover]'); iTunes, Deezer, Radio Browser and myMPD are stdlib-only. - CLI overrides config:
-H/--host,-p/--port,--music-dir,--config,--use-journal,--no-reconnect,-v/--verbose.
🔥 Removed
- Desktop notifications dropped: no more
notify.pyor[Notify]section. Modern desktops raise their own bubbles off the exported MPRIS metadata, so a second libnotify layer was redundant. - i18n dropped (babel + gettext): the daemon is English-only, removing the translation toolchain and runtime.
- Cover config folded into a single
BridgeConfigfield; cover-source plumbing unified into one registry.
🏗️ CI / Dev
- Dependabot added (pip + github-actions, grouped into one PR per ecosystem).
- Added bridge MPRIS-callback test coverage.
- README overhaul: badges, Features, table of contents, cover-art pipeline table, plus Used in / Contributing / Credits / License sections.
🙏 Thanks
- @pbattino for the web-radio cover work that inspired this cycle and for suggesting the Radio Browser API (odios#33).
Full changelog: v0.10.1...v0.11.0
What's Changed
v0.11.0-rc.1
Full Changelog: v0.10.1...v0.11.0-rc.1
Full Changelog: v0.10.1...v0.11.0-rc.1
Full Changelog: v0.10.1...v0.11.0-rc.1
v0.11.0-beta.6
Full Changelog: v0.10.1...v0.11.0-beta.6
Full Changelog: v0.10.1...v0.11.0-beta.6
v0.11.0-beta.5
Full Changelog: v0.10.1...v0.11.0-beta.5
v0.11.0-beta.4
Full Changelog: v0.10.1...v0.11.0-beta.4
Full Changelog: v0.10.1...v0.11.0-beta.4
v0.11.0-beta.3
Full Changelog: v0.10.1...v0.11.0-beta.3