Skip to content
This page is for the development version of rmpc. Make sure your version matches the selected documentation.

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:

Rmpcd can currently only be built from source code or installed via Nix using the provided flake.

This assumes you have git and rust installed already.

Terminal window
# Either with cargo directly
cargo install --git https://github.com/mierak/rmpc.git rmpcd
# Or clone the repo and run
git clone https://github.com/mierak/rmpc.git
cd rmpc
cargo run --package rmpcd

With the flake added to your flake inputs, add the package to your system configuration:

configuration.nix
{ inputs, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
inputs.rmpc.packages.${pkgs.stdenv.hostPlatform.system}.rmpcd;
];
}

After installation run:

Terminal window
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:

init.lua
-- ##############################################################
-- ## ##
-- ## 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 Config
local 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