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?