Ravi Sagar | Home | Blog

Install and configure mpd & ncmpcpp on Arch Linux

Table of Contents

I use the following configuration on my Thinkpad x220.

1 Install mpd and ncmpccp

sudo pacman -S mpd
sudo pacman -S ncmpcpp

2 mpd.conf file

mkdir ~/.config/mpd
cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf

This is the content of my ~/.config/mpd/mpd.conf

music_directory		"/srv/public/sdcard1_4gb"
playlist_directory		"~/.config/mpd/playlists"
db_file			"~/.config/mpd/database"
log_file			"~/.config/mpd/mpd.log"
pid_file			"~/.config/mpd/pid"
state_file			"~/.config/mpd/state"
sticker_file			"~/.config/mpd/sticker.sql"
auto_update	"yes"
audio_output {
 type  "pulse"
 name  "mpd pulse-audio-output"

audio_output {
 type  "alsa"
 name  "mpd alsamixer-output"

audio_output {
 type   "fifo"
 name   "my_fifo"
 path   "/tmp/mpd.fifo"
 format "44100:16:2"

Don't install the mpd service. Run it under your user profile.

2.1 TODO Autostart mpd when dwm is started

3 Error: binding address and port already in use

Check which application is using the port

ss -a -p '( sport = 6600 )'

Then kill that process, it might be anothe mpd running.

4 Run mpd for troubleshooting errors

mpd --no-daemon --stdout --verbose

This will give you details of what went wrong in starting mpd.

5 ncmpcpp will run as it is

In my case I didn't do any configurations for ncmpcpp, it worked out of the box but it can also be customised if needed but we are bit adventurous, don't we.

cp /usr/share/doc/ncmpcpp/config ~/.config/ncmpcpp/config

This is how my ~/.config/ncmpcpp/config look like.

ncmpcpp_directory = ~/.config/ncmpcpp
lyrics_directory = ~/.config/mpd/lyrics
mpd_host = localhost
mpd_port = 6600
mpd_connection_timeout = 5
visualizer_data_source = /tmp/mpd.fifo
visualizer_output_name = Visualizer feed 
visualizer_in_stereo = yes
visualizer_type = spectrum
visualizer_look = ●▮
visualizer_color = 47, 83, 119, 155, 191, 227, 221, 215, 209, 203, 197, 161

6 ncmpcpp shortcuts

  • r: Toggle random mode
  • z: Toggle repeat mode
  • y: Toggle single mode, play only one song or not
  • >: Next track
  • <: Previous track
  • Enter: Play selected song
  • c: Clear playlist
  • e: Edit song
  • +: Increase volume
  • -: Decrease volume
  • f: Seek forward

7 Display current song using xsetroot

Make sure there is this line in your config file.

execute_on_song_change = "sh ~/.xsetroot.sh"

So the idea here is to call the ~/.xsetroot.sh when the song is changed and in this file there is a line to get the current playing song using ncmpcpp --current-song -q.

Great isn't it?

8 Search files using mpc and add them to the playlist

Search for a song using any tag.

mpc search any nelly

This will return all the songs with the path which is not the realpath, this is the path that mpd knows but you can use this path and add the found songs to your mpc current playlist using the following command.

mpc search any nelly | while read line; do mpc add "$line"; done;

This will of course add all the found song but you can also use mpc add add <file> to add a single song. Cool isn't it?