What is RMPC?
RMPC is a TUI (terminal UI) client for MPD — it does not do audio output itself, it just sends commands to MPD. (mierak.github.io)
So the setup has two parts:
- Install & configure MPD (the server/daemon that plays music)
- Install & configure RMPC to connect to MPD
Step 1: Install MPD + required clients/tools
On Arch-like systems:
sudo pacman -S mpd mpc
You may also install ncmpcpp
(another MPD client) for testing. (ArchWiki)
Step 2: Create necessary directories & base config
- Create configuration directory and subfolders:
mkdir -p ~/.config/mpd/playlists
mkdir -p ~/Music
- Copy the example config (if available) to your user config:
On Arch:
cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf
Or check /usr/share/mpd/mpdconf.example
. ([IPv6rs](https://ipv6.rs/tutorial/Arch_Linux/mpd/"How to Install mpd on Arch Linux - IPv6rs"))
- Open
~/.config/mpd/mpd.conf
in your editor and set the basic paths. Here is a minimal working example:
# Paths (adjust for your username)
music_directory "/home/ahmad/Music"
playlist_directory "~/.config/mpd/playlists"
db_file "~/.config/mpd/database"
log_file "~/.config/mpd/log"
pid_file "~/.config/mpd/pid"
state_file "~/.config/mpd/state"
sticker_file "~/.config/mpd/sticker.sql"
# Audio output block (choose based on your sound system)
audio_output {
type "pipewire"
name "MPD PipeWire Output"
}
# Symbolic links behavior
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
You can also use type "alsa"
or type "pulse"
depending on your system. (ArchWiki)
Step 3: Fix permissions & ensure everything is accessible
The MPD process must have read access to your music directory and write access to the config / database files.
If you run MPD as your user (not as root), make sure
~/Music
and~/.config/mpd/
are owned by you (or have appropriate permissions).Ensure that all parent directories have the “execute” bit (so they can be entered).
Avoid running MPD as root. Use the user service. (ArchWiki)
Step 4: Enable & start MPD (with systemd user unit)
Because MPD provides a user-level systemd service, you can manage it with:
systemctl --user enable mpd
systemctl --user start mpd
You can also use:
systemctl --user restart mpd
To check status:
systemctl --user status mpd
The ArchWiki notes this approach. (ArchWiki)
Also note: MPD supports socket activation via mpd.socket
. You can enable that instead if you prefer MPD to start on demand. (ArchWiki)
Step 5: Update MPD’s music database
Once MPD is running successfully, you need to tell it to scan your music directory:
mpc update
Or via a UI client (if it supports “update library”).
Check that the database is populated:
mpc ls
mpc listall
If nothing appears, double-check your music_directory
path and permissions.
Step 6: Install RMPC
Follow the instructions in RMPC’s docs: (mierak.github.io)
If you’re on Arch:
sudo pacman -S rmpc
Or build via cargo
etc.
Step 7: Configure RMPC(Optional)
RMPC needs to know where MPD is (host / port / socket). By default it uses 127.0.0.1:6600
. (mierak.github.io)
You can create or edit its config file to set:
# Example in rmpc config
address = "127.0.0.1:6600"
password = None
You may also connect over a UNIX socket if your MPD is configured to use one.
Step 8: Run RMPC & test control
Just run:
rmpc
You should see the TUI, listing songs / playlists etc. You can browse your library, queue songs, play, pause, skip etc.
If it fails to connect, check:
MPD is running
The host / port / socket is correct
No firewall blocking
If MPD requires a password, set it in RMPC config
Troubleshooting tips & common pitfalls
- Port already in use: If MPD fails to bind TCP port 6600, maybe another MPD is running or socket activation is handling it.
- Missing directories or files: Create playlists directory, music folder, etc.
- Wrong path / username in config: Be careful with your home path.
- Permissions: The MPD process must have access rights.
- Audio output misconfigured: If you pick
pipewire
,pulse
, oralsa
, ensure your system’s audio pipeline is compatible. - Failure on MIDI files: Some decoder plugins (e.g. wildmidi) may complain if dependencies missing — usually ignorable if you don’t use MIDI.