I would like to add a new feature to ncmpcpp. How do I proceed?

First of all, please talk to me first and let us discuss the feature in question to clarify the details, assess its importance and whether it’s really needed.

The next stage is the actual implementation. After it’s been done, you can e.g. send me a pull request on GitHub. Before you do this, please make sure that the indentation of your code follows the indentation of the rest of the project and the feature you implemented actually works, including edge cases.

Trying to run tag editor ends up in ncmpcpp showing me ‘Couldn’t read file “X”‘. How to fix it?

First, let me apologize for the uselessness of the message, but TagLib doesn’t give any details about why it couldn’t open a file. Having said that, the problem most of the time is one of the following:

  1. There is a typo in mpd_music_dir configuration variable.
  2. The file you’re trying to open has insufficient privileges.

To check for (a), copy and paste the path from error message that was displayed into your favorite file browser. If it tells you that the file doesn’t exist, you can stop looking and just correct the typo. Otherwise verify that the privileges are correct.

Command line options for controlling the playback (play/stop/pause/prev/next) were removed from ncmpcpp. I need them, what do I do?

The reason they were removed is that it was a direct duplication of the functionality provided by mpc. I apologize for the confusion, but these options should never have been added to ncmpcpp in the first place.

ncmpcpp doesn’t work properly (or stopped working altogether). What can I do to help fixing the problem?

First of all, check if the version you’re using is the latest stable (or the current master in case of development version). If it’s not, upgrade and check if the problem persists. In case it does you can file a ticket on Mantis or GitHub (the former is preferred). In the report please include:

  • ncmpcpp version you’re using
  • steps required to reproduce the problem
  • your configuration and custom bindings if applicable (both filtered through grep -v '^#' so they contain only relevant data)

Including a meaningful backtrace (in the case of hard crash) is also helpful.