Native XMMS2 client library for GNU Guile.
Scheme Makefile Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
examples
scheme
tests
tools
.gitignore
Makefile
README
common.mk

README

XMMS2 client library for GNU guile
----------------------------------

This is  a native implementation  of the control  protocol for the  XMMS2 audio
playback server application. The library  is written in Scheme and specifically
targets the GNU Guile implementation of the language.

The  actual command  set for  the protocol  is generated  from XMMS2's  ipc.xml
definition file. The code in ‘scheme/constants’ and in ‘scheme/ipc’ is directly
generated from said definition.


Quickstart
----------

% make ipc XMMS2_IPC_XML="$HOME"/src/xmms2/src/ipc.xml
% make compile
% ./tools/guile-in-here ./examples/cli play

(This assumes you followed the “Examples” section below.)


Documentation
-------------

The ‘doc’ subdirectory  contains all documentation for the  project, except for
this  README. The  main documentation  consists of  two documents:  One is  the
library's reference manual. Much of the  reference manual is generated from the
Scheme source code  using the documentation strings attached to  the symbols of
the public APIs of the different  modules, using some of GNU Guile's introspec-
tion features.

The  second document,  is a  set notes  about the  protocol that  XMMS2 servers
speak, as implemented by the library. These were taken during development. They
are neither complete nor does the document  claim to be any sort of an authori-
tative source of information about the protocol. And it was never proof-read by
anyone  who knows  the protocol,  so bugs  are likely.  Hence the  subtitle “An
Unreliable Hacker’s Guide”.

Building the documentation requires ‘pandoc’ to be installed on the build host,
along with its dependencies to generate ‘html’, ‘roff’ (manual pages) and ‘pdf’
(think “LaTeX”) documents. Calling ‘make doc’ from the project's root directory
will then build the two main documents in those three formats.


Dependencies
------------

The library requires the use of an XMMS2 snapshot (0.8DrO_o-947-g3bd868a at the
time of writing), as well as GNU  Guile 2.0. The documentation inside the ‘doc’
sub-directory is generated from markdown  sources to their target formats using
pandoc. Generating  PDF versions  of the documentation  will require  a working
LaTeX installation.

Moreover, running  the test-suite  requires the ‘scm-test-tap’  as well  as the
‘test-dispatch’ packages from:

    https://github.com/ft/scm-test-tap
    https://github.com/ft/test-dispatch


Installation
------------

% make ipc XMMS2_IPC_XML="$HOME"/src/xmms2/src/ipc.xml
% make doc
% make compile
% make test
(…and as root…)
# ./install


Examples
--------

The ‘examples’ sub-directory  contains a couple of programs  using the library,
that were and are written as experiments  to test the library against an actual
XMMS2 server.

Because they  are mainly used during  development, they do not  necessarily use
the most elegant solution to a  given problem, but rather something that worked
at the time. This may improve in the future.

Also note,  that because of  their development-aiding purpose, the  examples do
not connect the  default XMMS2 server socket,  but instead use a  version of it
that  is piped  through socat.  In order  to get  such a  socat session  up and
running, use the following command in a separate terminal:

  % socat -t100 -x -v \
      UNIX-LISTEN:/tmp/xmms-ipc-"$USER".socat,mode=700,reuseaddr \
      fork \
      UNIX-CONNECT:/tmp/xmms-ipc-"$USER"

Note that piping through socat significantly impacts performance.