eGUI - Graphical User Interface for Embedded Systems
In this section is investigated different options to run an open source graphical user interface on systems with limited memory
ressources. To provide a graphical interface, the system requires a low level graphical library and
a widget toolkit from which users can build their customized GUI from. The low level graphical library often comes from a
windows management layer that takes care of rendering fonts, drawing lines etc..
They are severals windows management layer available around such as the X Window System (X11), Nano-X, DirectFB etc.. For the time being, this section will focus on
Nano-X which is a good candidate to run on small targets. Nano-X is said to have a footprint of a few 100KB. Several open source widget toolkit are also
available such as FLTK, wxWidgets (wxEmbedded) or the newer ilixi for DirectFB. The current wxWidgets documentation states that Nano-X is not yet 100% (might never be)
supported, so, instead we focus on FLTK. FLTK library is fully compliant with the X Window System but not with
Nano-X. In order to use FLTK with Nano-X, a new layer must be inserted to convert X11 calls to Nano-X calls.
This layer is a library called NXLIB. As an alternative, it is possible to use FLNX. FLNX is an FLTK based library specially adapted for Nano-X
avoiding the need of the additional glue layer. However, FLNX has not been updated since the year 2000 while FLTK 1.1.3 for Nano-X
is available from microwindow.org.
In addition, while both DirectFB and Nano-X can interface Linux framebuffer, DirectFB require some porting effort to run with other operating system such as eCos or RTEMS.
Here is an impressive example of a Portable desktop environment based on FLTK -> http://equinox-project.org/. Some basic FLTK tutorials can be found here: http://www3.telus.net/public/robark/
According to the user needs, additional libraries might be required to handle different compression format such as PNG, JPEG etc... These libraries are available from various open source projects from the web.
From the size of its developer community, DirectFB seems a good alternative to Nano-X and will be investigated later. A seperate FLTK git repository modified to run on top of DirectFB is also available, mostly inspired from NXLIB / microwindows it seems. Ilixi is a new toolkit for DirectFB that also looks promising.