Skip to content


Subversion checkout URL

You can clone with
Download ZIP
queue-based music playing daemon
Branch: master

Server: keep a history list

This is accessible via the "history" command, just as the
queue is. You can use this to check what's been playing

The history grows without bound. In practice, this isn't a
big deal. The average track is a few minutes long and has an
absolute path of about 50 characters or so. At that rate, we
waste a whopping 23K per day of constant playing. In only
2-3 years of constant playing, we'll match the 17 megabyte
bloat we get just from loading perl and gstreamer into
latest commit 91a45ae5a4
@peff authored
Failed to load latest commit information.

xqp -- music queue playing daemon

xqp is a queue-based music-playing daemon that stresses simplicity, flexibility, and extensibility.

xqp is queue-based: tracks are played sequentially from a queue, and the user is free to add to or manipulate the queue at any time. The currently playing track is never interrupted (unless you ask for it explicitly), making it suitable for DJ-ing or party situations.

xqp is simple: there is no music database, no tag management, no playlist management, and no graphical interface. The queue is a list of files to play. It's written in only a few hundred lines of perl, and relies on gstreamer to do the heavy lifting.

xqp is flexible: clients access the daemon over a simple text-based protocol, and a scriptable unix-friendly client is included. You can dump the queue to a file, edit it with your favorite text editor, and then push it back to the daemon.

xqp is extensible: xqpd will run arbitrary perl code from the user. You can provide custom gstreamer elements in the pipeline. You can use smart playlist generators to generate items in the queue. You can hook notifications into your existing status widgets. And so on.


To build from the git repository, you will need the mfm tool. You can get it here:

Then run:

make install


Send questions or comments to

Something went wrong with that request. Please try again.