urmpc A console Python MPD client using urwid
View on GitHub

urmpc is a terminal-based client to the Music Player Daemon, emphasizing keyboard controls and configurability. MPD clients do not play music on their own, but instead provide the user with a way to control the playback of the server. urmpc is targeted towards users who call the terminal and vim home, the people who are comfortable without a GUI and tend to shun the mouse as much as possible in favor of keyboard navigation. It by default also heavily targets vim users, although these default keybindings are largely cosmetic and may be easily modified to whatever the user pleases. urmpc, as a terminal application, does not require any GUI to run, although it can easily accommodate a graphical environment by running in any terminal emulator.

Configurable
For the special snowflake in all of us

All colors, keybindings, separators, sorting, etc. are easily adjustable from an INI file with embedded JSON where nonscalar data types are required. Each part of the interface should be configurable. Although urwid attempts to handle much of this, different colors may be required when the color depth of the available terminal means that similar colors are blended together, leaving the UI unreadable, or when a unicode character used for an appealing border or separator is unavailable in the terminal or font used on the client machine.

Alternate keybindings are provided for users uncomfortable with vi-style navigation, although an intuitive experience for vi users is the main goal of the default settings. Power users have an insatiable drive to fiddle and hack on their applications and work environments, to make their machines appear and operate in a way which is uniquely theirs. urmpc strives to be yet another means to that end.

Lightweight
"Do one thing and do it well"

urmpc attempts to accomplish the single task of controlling MPD from the console in a network-transparent manner. As such, as much functionality as possible is delegated to external dependencies, since the most useful and reliable tools are often those which are smallest and most focused. urmpc's feature set is restricted to the functionality which can be implemented with only the MPD protocol.

Similar projcts such as ncmpcpp have included features like filesystem browsing and tag editing. Both of these features are unsuitable for a pure MPD client, as the MPD protocol does not provide a method for direct filesystem access or metadata modification. Unfortunately, that approach breaks the network transparency of MPD, requiring the client to reside on the same machine as the system to be fully functional. Visualizations are a similarly inappropriate feature; since music may be streamed over a FIFO but not over the MPD protocol itself, visualizations over the network are not possible without cumbersome workarounds.