Timm S. Müller

Middleware – Open Source – Embedded Systems

de en
opensource.org Open Source Initiative Official Linux Penguin Lua scripting language

tekUI – Embeddable GUI toolkit

tekUI is a self-contained, light-weight, scriptable graphical user interface toolkit with advantages in prototyping and rapid application development for 32bit microcontrollers, set-top boxes and kiosk systems.


Based on our host and hardware isolation layer and a few platform-specific bindings, tekUI consists of the Lua virtual machine, a class library and some C modules. All essential components are available under an open source license. tekUI 's key features are:

  • Small, ROM-able code base, not exceeding a total of 300K binary code
  • Highly portable across different architectures and platforms
  • GUI code is executed in a safe environment and cannot crash your device or application.
  • The application, the GUI and custom controls can be developed on a regular workstation. Classes can be linked to binaries or loaded at runtime.
  • Extensible class library: New controls can be created with little effort. It is possible to derive new classes ad hoc in C code or Lua scripts.
  • Performance-critical classes can be ported to C successively, in varying degrees of reliance on the VM's resource management.
  • Benefit from a programmable, fine-tunable garbage collector and our patch for O(1) runtime behavior of the Lua VM's memory manager.
  • Comprehensive online documentation for the class library is provided. Also, an automated class documentation system is included.

Platform Support

Host operating systems and standards currently supported are POSIX (Linux, *BSD and others) and Windows. Display back-ends are X11, Windows, Linux and raw framebuffer, VNC, DirectFB and others. Additional custom drivers or bindings can be provided on request.

GUI Properties

  • Fully event driven
  • Automatic layout and scalability
  • Support for themes and Cascading Style Sheets
  • Support for multiple and anti-aliased fonts
  • Full UTF-8 Unicode and localization support
  • Allows for multi-windowed, tabbed and full-screen applications, pop-ups, menus and dialog boxes
  • Concurrency thanks to built-in support for method dispatching to cooperative threads
  • Timing events allow for easy programming of multimedia controls and smooth animations.
  • GUIs are self-modifiable and can change their layout dynamically.

Thanks to tekUI 's clean and modular architecture, unneeded features can be removed with moderate effort. More characteristics benefiting resource-friendliness:

  • Fully incremental refresh logic, back buffers are not required
  • Remarkably fast and resource-friendly virtual machine: an interpreter state occupies less than 64K of RAM. A JIT version is available for many architectures.
  • Entirely based on the number range of 32bit integers, to equally support stock (double precision), single precision and integer versions of the VM

GUI Elements

Notes: Buttons are actually Text instances with special behavior. This list is not exhaustive; abstract and auxiliary classes have been omitted.

  • Canvas (smoothly scrollable)
  • CheckMark
  • DirList (file chooser included)
  • FloatText (adaptive to available space)
  • Gauge
  • Group (horiz., vert., grid, pages, scrollable)
  • Handle (for group balancing)
  • Image
  • List (also multi-column and multi-selection)
  • Menu (pop-up and window, also nested)
  • PopItem (also nested)
  • PopList (combo box)
  • RadioButton
  • ScrollBar
  • Slider
  • Spacer
  • Text (also static label, also multi line)
  • TextInput

Support and Services

tekUI itself is free of charge, and you are free to use the public source code repository and documentation.

We are available for support and services as well as for creating drivers, components and classes, either on request or within the scope of adaptations to your target application. Also, we design and implement complete systems and applications based on your requirements and specifications.

In any case, feel free to ask for quotes for a fitting support, service or work contract.

Open Source Licensing

More and more customers a priori demand the use and application of open source components and production methods, for they deem it necessary for securing their investment and for staying in control of their products. We resort to open source licenses for substantial parts of our work, so that customers can test and employ our products and frameworks. Our license can be combined with the GPL, but it also allows derivative work to remain closed, to be sold and sublicensed.

See also