Skip to content

Releases: b0bbywan/mpd2mpris

v0.12.0

18 Jun 11:42

Choose a tag to compare

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.mpd is 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 mpd2mpris

Enable (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): mpdris2mpd2mpris.
  • Executable: mpDris2mpd2mpris.
  • systemd user unit: mpDris2.servicempd2mpris.service.
  • Config dir: ~/.config/mpDris2/~/.config/mpd2mpris/ (and /etc/mpDris2//etc/mpd2mpris/).
  • Repository: b0bbywan/mpDris2b0bbywan/mpd2mpris (old URLs redirect).
  • Unchanged: the MPRIS bus name org.mpris.MediaPlayer2.mpd and the D-Bus service file.

⬆️ Upgrading from mpdris2

  • The .deb declares Conflicts/Replaces/Provides: mpdris2, so apt upgrade swaps the old package for the new one cleanly: the old mpdris2 is removed automatically, no manual step.
  • Config is picked up automatically: the new ~/.config/mpd2mpris/mpd2mpris.conf and /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.service then after install systemctl --user daemon-reload && systemctl --user enable --now mpd2mpris.service.

⚙️ Configuration

  • INI config at ~/.config/mpd2mpris/mpd2mpris.conf, falling back to /etc/mpd2mpris/mpd2mpris.conf then the legacy mpDris2 paths. 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.toml now uses the SPDX license = "GPL-3.0-or-later" string (+ license-files), dropping the deprecated table form. Build requires setuptools>=77.
  • Dropped Suggests: python3-systemd, vestigial from the original mpDris2. The asyncio rewrite never imports the systemd module (--use-journal only 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

  • Rename project mpDris2 → mpd2mpris (0.12.0) by @b0bbywan in #11

v0.12.0-beta.1

18 Jun 10:37

Choose a tag to compare

v0.12.0-beta.1 Pre-release
Pre-release

Full Changelog: v0.11.1...v0.12.0-beta.1

v0.11.1

15 Jun 23:24

Choose a tag to compare

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 mpdris2

Ships 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 mpdris2

The .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 with pipx install mpdris2 on 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-artifact v6 → v7, repository-dispatch v3 → v4.

Full changelog: v0.11.0...v0.11.1

What's Changed

New Contributors

Full Changelog: v0.11.0...v0.11.1

v0.11.1-beta.1

15 Jun 23:14

Choose a tag to compare

v0.11.1-beta.1 Pre-release
Pre-release

What's Changed

  • Bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #9

New Contributors

Full Changelog: v0.11.0...v0.11.1-beta.1

v0.11.0

09 Jun 13:05

Choose a tag to compare

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 mpdris2

Enable (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 → MPD albumart → 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 (mympd also needs [Cover] mympd_uri).
  • Link, don't re-host: remote steps expose the image URL as mpris:artUrl directly. 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.conf as 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.py or [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 BridgeConfig field; 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

09 Jun 01:13

Choose a tag to compare

v0.11.0-rc.1 Pre-release
Pre-release

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

08 Jun 19:54

Choose a tag to compare

v0.11.0-beta.6 Pre-release
Pre-release

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

08 Jun 17:01

Choose a tag to compare

v0.11.0-beta.5 Pre-release
Pre-release

Full Changelog: v0.10.1...v0.11.0-beta.5

v0.11.0-beta.4

08 Jun 15:50

Choose a tag to compare

v0.11.0-beta.4 Pre-release
Pre-release

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

08 Jun 14:53

Choose a tag to compare

v0.11.0-beta.3 Pre-release
Pre-release

Full Changelog: v0.10.1...v0.11.0-beta.3