Updated: 2011/09/19 23:29:11 julian


libRUIN (Renderer for User Interfaces in Ncurses) is a rendering library for various XML-based user interface markup languages (such as XHTML or Mozilla XUL), using the Ncurses terminal control library as a rendering target. GNU Guile and the SDOM Scheme module are used as the "glue" that manages user input and event handling (as such, event handlers must currently be written in Guile Scheme; support for ECMAscript event handlers is being considered for inclusion). An application programmer passes an XML document (including, potentially, a set of CSS stylesheets) and an Ncurses WINDOW structure, and libRUIN paints the WINDOW according to the markup and CSS; the programmer may subsequently pass Ncurses-style input strings to that WINDOW via libRUIN, and libRUIN will handle the resulting event flows.

Development status

Download libRUIN

The current development version of libRUIN is 0.2.0. This version is largely function-complete but has not undergone significant testing, and thus should not be considered for critical projects. The API is subject to flux and some parts will almost certainly be changed before a stable release is made. Nonetheless, we encourage you to download it and run through the test suite (and perhaps add to it yourself). See the README file in the distribution for more information.

There are currently no stable releases of libRUIN.


Here are some pictures of libRUIN in action.


libRUIN depends on (and includes in its distribution) the following Scheme modules, which may be of interest to developers doing XML and CSS work in Scheme:

Mailing list

libRUIN has a mailing list provided by Savannah for discussion related to development. Visit the list info page for subscription information.


An HTML version of the libRUIN documentation is available here.


libRUIN is being developed and will be released under the GNU General Public License. See the Free Software Foundation's web site for more information.

Copyright © 2011 Julian Graham

Verbatim copying and distribution of this entire web page is permitted in any medium, provided this notice is preserved.