Overview and installation
Rmpcd is a small MPD client designed to serve as a companion to rmpc or other MPD frontends. It runs as a daemon in the background and can be configured to automate things that are otherwise unfit for a frontend.
Features
Section titled “Features”Features:
- Lua plugin API
- MPRIS server implementation
- A few plugins:
Installation
Section titled “Installation”Rmpcd can currently only be built from source code or installed via Nix using the provided flake.
Building from source
Section titled “Building from source”This assumes you have git and rust installed already.
# Either with cargo directlycargo install --git https://github.com/mierak/rmpc.git rmpcd
# Or clone the repo and rungit clone https://github.com/mierak/rmpc.gitcd rmpccargo run --package rmpcdWith the flake added to your flake inputs, add the package to your system configuration:
{ inputs, pkgs, ... }:
{ environment.systemPackages = with pkgs; [ inputs.rmpc.packages.${pkgs.stdenv.hostPlatform.system}.rmpcd; ];}After installation run:
rmpcd init# You will see output similar to:2026-03-28T23:42:17.918458Z INFO rmpcd/src/main.rs:109: Created default config at '/home/<user>/.config/rmpcd/init.lua'2026-03-28T23:42:17.918924Z INFO rmpcd/src/main.rs:124: Created Lua API type definitions at '/home/<user>/.local/share/rmpcd/lua'This will create a default init.lua at the path shown in the log. It will also generate a
.luarc.json file pointing to the type definitions, allowing your editor to provide autocompletion
if you have the Lua language server installed and
configured.
Rmpcd will keep the generated type definitions up to date automatically. Make sure to not edit these files directly.
The generated init.lua. is shown below for reference:
-- ##############################################################-- ## ##-- ## This is an example config file. Uncomment and customize ##-- ## to your liking. Check out the documentation for more ##-- ## information. https://rmpc.mierak.dev/rmpcd/ ##-- ## ##-- ##############################################################
---@type Configlocal config = { -- Point rmpcd to your mpd server address = "127.0.0.1:6600",}
-- Enable mpris support-- config.mpris = true
-- Disable TCP keepalive on the MPD socket (enabled by default)-- config.enable_keepalive = false
-- Automatically increment play count on song change-- rmpcd.install("#builtin.playcount")
-- Install last fm scrobbling builtin-- For now you have to request an API key yourself due to LastFM's insane API-- design https://www.last.fm/api/account/create-- rmpcd.install("#builtin.lastfm"):setup({-- api_key = "<your api key>",-- shared_secret = "<your shared secret key>",-- update_now_playing = false,-- })
-- Install notification on song change builtin-- rmpcd.install("#builtin.notify"):setup({-- debounce_delay = 1000,-- })
-- Install the auto lyrics download builtin-- rmpcd.install("#builtin.lyrics"):setup({-- debounce_delay = 1000,-- })
-- Install the last played time tracking plugin from git repo using the integrated plugin manager.-- rmpcd.install({ url = "https://github.com/rmpc-org/rmpcd-lastplayed.git" })
return config