Skip to main content

Expose your MPD server as a 'now playable' app on MacOS

Project description

mpd-now-playable

This little Python program turns your MPD server into a now playable app on MacOS. This enables your keyboard's standard media keys to control MPD, as well as more esoteric music control methods like the buttons on your Bluetooth headphones.

Installation

The recommended way to install mpd-now-playable and its dependencies is with pipx. I'm currently unable to register a PyPI account, so to install you'll currently need to do something like this:

pipx install 'git+https://git.00dani.me/00dani/mpd-now-playable'

However once PyPI opens registration again, this will work too, and it's the approach I definitely recommend:

pipx install mpd-now-playable

Once pipx is done, the mpd-now-playable script should be available on your $PATH and ready to use.

Most likely, you'll want mpd-now-playable to stay running in the background as a launchd service. Here's the service plist I use, but it's hardcoded to my $HOME so you'll want to customise it.

Configuration

You may not need any configuration! If you've got a relatively normal MPD setup on your local machine, mpd-now-playable ought to just work out of the box, as it uses sensible defaults. If you need to control a remote MPD server, or your MPD clients use a password, though, you'll need configuration for that use case.

Currently, mpd-now-playable can only be configured through environment variables. Command-line arguments are intentionally not supported, since your MPD password is among the supported settings and command-line arguments are not a secure way to pass secrets such as passwords into commands. Reading configuration from a file is secure, so mpd-now-playable may support a config file in future.

The following environment variables are read. The MPD_HOST and MPD_PORT variables are supported in the same way mpc uses them, but you can alternatively provide your password as a separate MPD_PASSWORD variable if you wish.

  • MPD_HOST - defaults to localhost, which should be fine for most users. If you want to control a remote MPD server, though, you can.
  • MPD_PORT - defaults to 6600, which will almost always be the correct port to use.
  • MPD_PASSWORD - has no default. Set this only if your MPD server expects a password. You can also provide a password by setting MPD_HOST=password@host, if you want to be consistent with how mpc works.

One simple secure way to set your environment variables is with a small wrapper script like this:

#!/bin/sh
export MPD_HOSTNAME=my.cool.mpd.host
export MPD_PORT=6700
export MPD_PASSWORD=swordfish
exec mpd-now-playable

Make sure this wrapper script is only readable by you, with something like chmod 700!

Limitations

mpd-now-playable is currently very specific to MacOS. I did my best to keep the generic MPD and extremely Apple parts separate, but it definitely won't work with MPRIS2 or the Windows system media feature.

Chances are my MacOS integration code isn't the best, either. This is the first project I've written using PyObjC and it took a lot of fiddling to get working.

I'm very open to contributions to fix any of these things, if you're interested in writing them!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpd_now_playable-0.0.4.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

mpd_now_playable-0.0.4-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file mpd_now_playable-0.0.4.tar.gz.

File metadata

  • Download URL: mpd_now_playable-0.0.4.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.10.4 CPython/3.12.0

File hashes

Hashes for mpd_now_playable-0.0.4.tar.gz
Algorithm Hash digest
SHA256 cbab2fdb8b19d614d411829f3f3e6293b9ad2c259a0095921f9eb186de0ec36f
MD5 14295bbded551ac9a1ecc5faec08ce5b
BLAKE2b-256 b968a99314cf8929423b509083e14298f7b856df369ea00161531acfed9a7e3b

See more details on using hashes here.

File details

Details for the file mpd_now_playable-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for mpd_now_playable-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b7f1ec492a0b4a295ae37d7af2ac2a8b82eca1541476cde91a81b52c24208afc
MD5 40839e666215fb9b975e7915c50f2944
BLAKE2b-256 50249e03b5e97bfdabfb93dd4ebf35fc604092c98c933883ad33aa1bfee76557

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page