ANN: wxi, a library to build composable GUI on top of wxErlang

Dimitry Golubovsky <>
Fri Apr 2 15:15:17 CEST 2010


I have been working on this library for some time; now that it is
getting into shape I'd like to announce it to the Erlang community.

The wxi library [1] is based on the same ideas as found in the Haskell
GUI library Fudgets [2]: each element of graphics user interface (a
widget) also acts as a "stream processor" for streams of events
(messages) generated from user input and I/O operations. Processed
messages are passed around from widget to widget. Thus, desired user
interface layout and dynamics can be achieved via functional
composition of such GUI elements.

Each widget is defined as a function of certain structure, widgets can
be nested, combined in parallel and in sequence (in terms of message
handling). There is no central event loop: each widget is responsible
for capturing and handling its own events. There is no central GUI
state: widgets that encapsulate state are implemented as processes;
stateless widgets are just functions tail-calling other widget
functions to pass messages around.

The wxi library is in early development state: while the core
functionality (composition of widgets) is more or less working, the
library of general purpose widgets is not yet completed, but this is
only a matter of time and users contributions.

For now, the library contains only one module [3] containing widgets
composition functions and few generic widgets (panel, button, text
display). there is a brief tutorial [4], and an "obligatory" example
of calculator [5] with detailed comments in code.

To give the library a try, download a repo snapshot [6], or clone the
repo: (see

I will be happy to hear from the developers of Erlang-based projects
that involve wx-based GUI whether using such a library would be more
convenient and productive in comparison with "traditional" way (e. g.
the wx-based GUI to dialyzer which is based on a central event loop).

Thanks in advance for any ideas and suggestions.


Dimitry Golubovsky

Anywhere on the Web

More information about the erlang-questions mailing list