“A Linux GUI consists of several individual parts, some of which
may be interchangeable. The GUI provided by desktop Linux
distributors like Red Hat, SuSE, or Debian includes a windowing
system for basic drawing and overlapping window support, a widget
set (or sets) for applications to use, a window manager to
implement windowing policies and to decorate windows, and a desktop
environment to tie everything together into a coherent whole. For
an embedded GUI, the windowing system and widget set are the most
important components.“There are several embeddable widget sets for Linux, including
Qt/E, FLTK, and GTK+. These can run on several possible windowing
systems, including the X Window System and a direct framebuffer
interface. An embedded systems developer must ask: Which
combination of options is right for my system? Which widget toolkit
should I adopt? How much engineering effort is needed to tweak to
spec? What footprint will all this require?“This article describes our experience designing and
implementing a custom GUI for a consumer Linux device. We decided
to use GTK+ running on the X Window System. It took five
engineer-months to produce our stable, customized and
reduced-footprint GUI totaling 2.9MB (including X)…”