id = "ncmpcpp" name = "ncmpcpp" homepage = "https://rybczak.net/ncmpcpp/" description = "An ncurses Music Player Daemon (MPD) client." executables = ["ncmpcpp"] # ncmpcpp is an ncurses program built against MPD's client library; it has no # Windows build, so only the two Unix platforms are claimed. platforms = ["macos", "linux"] [dotfiles] # ncmpcpp(1), the CONFIGURATION section: the configuration file is read from # "$XDG_CONFIG_HOME/ncmpcpp/config" or "$HOME/.ncmpcpp/config", and the key # bindings from "$XDG_CONFIG_HOME/ncmpcpp/bindings" or "~/.ncmpcpp/bindings". # The XDG spelling is [configHome], which on macOS is ~/.config — ncmpcpp # follows the spec there too, having no platform-native branch. The legacy # dotdir is listed beside it, and a consumer skips whichever is absent. paths = [ "[configHome]/ncmpcpp/config", "[configHome]/ncmpcpp/bindings", "~/.ncmpcpp/config", "~/.ncmpcpp/bindings", ] # The lyrics ncmpcpp fetches and the error log it writes sit in the same # directory. Neither is named above, so there is nothing to carve out of what # is; they are listed so a consumer syncing the whole directory skips them. exclude = [ "[configHome]/ncmpcpp/lyrics/", "~/.ncmpcpp/lyrics/", "[configHome]/ncmpcpp/error.log", "~/.ncmpcpp/error.log", ] # ncmpcpp connects to MPD, which on a per-user setup has no password; nothing # in these files is a credential. secret = [] # Read at startup by a process that then runs from memory. # Every spelling of the config file, because ncmpcpp reads whichever it finds # first and the two share a last segment, so the sibling check requires both. # # All four options are absolute paths into this machine's disk, and all four # are in ncmpcpp(1)'s own option list: mpd_music_dir (the music directory MPD # serves, which ncmpcpp needs locally for tag editing), ncmpcpp_directory # (where ncmpcpp keeps its own files), lyrics_directory, and mpd_host, which is # a socket path when it names one rather than a host name. # All four are locations the user wrote out — their music, their lyrics, the # socket their daemon listens on — so they are kept for rebuilding this machine # and applied to no other. [[dotfiles.machine_lines]] file = ["[configHome]/ncmpcpp/config", "~/.ncmpcpp/config"] match = { prefix = [ "mpd_music_dir", "ncmpcpp_directory", "lyrics_directory", "mpd_host", ] } scope = "backup" [commands] format = 1 label = "Start ncmpcpp" description = "Open the MPD client on a server, optionally with a given startup screen or config file." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "man" kind = "manual" url = "https://github.com/ncmpcpp/ncmpcpp/blob/master/doc/ncmpcpp.1" revision = "master (2026-10-27)" evidence = """-h, --host=HOST Connect to server at host [localhost] -p, --port=PORT Connect to server at port [6600] -c, --config=FILE Specify configuration file(s) -b, --bindings=FILE Specify bindings file(s) -s, --screen Specify the startup screen ( may be: help, playlist, browser, search_engine, media_library, playlist_editor, tag_editor, outputs, visualizer, clock) -q, --quiet Suppress logs and excess output""" [[commands.field]] id = "host" label = "MPD host" type = "string" option = ["--host", "-h"] sources = ["man"] [[commands.field]] id = "port" label = "MPD port" type = "integer" option = ["--port", "-p"] sources = ["man"] [[commands.field]] id = "config" label = "Config file" type = "path" path = { kind = "file", role = "input" } option = ["--config", "-c"] sources = ["man"] [[commands.field]] id = "bindings" label = "Bindings file" type = "path" path = { kind = "file", role = "input" } option = ["--bindings", "-b"] sources = ["man"] [[commands.field]] id = "screen" label = "Startup screen" type = "enum" choices = [ { value = "help", label = "Help" }, { value = "playlist", label = "Playlist" }, { value = "browser", label = "Browser" }, { value = "search_engine", label = "Search engine" }, { value = "media_library", label = "Media library" }, { value = "playlist_editor", label = "Playlist editor" }, { value = "tag_editor", label = "Tag editor" }, { value = "outputs", label = "Outputs" }, { value = "visualizer", label = "Visualizer" }, { value = "clock", label = "Clock" }, ] option = ["--screen", "-s"] sources = ["man"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["man"] [[commands.task]] id = "remote" label = "Connect to a remote MPD" fields = ["host", "port", "screen"] required = ["host"] [[commands.group]] id = "basic" label = "Basic" fields = ["host", "port", "screen"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["config", "bindings", "quiet"]