Skip to content
Ensemble Graphics Toolkit - Modern C++ GUI Toolkit for AT91/SAMA5 Microprocessors
C++ M4 Other
Branch: master
Clone or download
Sandeep Sheriker M and joshua-henderson ComboBox: invoke damage function
Invoke damage function when new items are added or items
are removed from ComboBox.

Signed-off-by: Sandeep Sheriker M <>
[reword commit message]
Signed-off-by: Joshua Henderson <>
Latest commit 8c9fce1 Jan 21, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs consistent type naming, remove using namespace std, documentation Jan 22, 2020
examples consistent type naming, remove using namespace std, documentation Jan 22, 2020
external remove kplot sub-module Jan 20, 2020
icons rework icons by limiting size and choosing a better default Jun 14, 2019
include/egt consistent type naming, remove using namespace std, documentation Jan 22, 2020
lua prefix all API functions and classes with EGT_API Nov 8, 2019
m4 check for and explicitly add -pthreads Jun 14, 2019
scripts fix make checkheaders target when running outside of srcdir Nov 8, 2019
src ComboBox: invoke damage function Jan 22, 2020
test fix make check unit tests with API changes Jan 17, 2020
.clang-tidy clang-tidy: ignore template specialization definition warning Jan 17, 2020
.gitignore ignore build directory Jan 7, 2020
.gitmodules remove kplot sub-module Jan 20, 2020 add and Mar 13, 2019 CONTRIBUTING: add section on assertions vs exceptions Jan 14, 2020
COPYING apply proper Apache 2 license Nov 19, 2018 fix make style when doing an out of source tree build Oct 23, 2019 switch from -std=c++11 to -std=c++14 Jan 17, 2020 automatically update submodules Aug 26, 2019 charts: replace old chart widget Jan 20, 2020 fix package description in Apr 18, 2019

Ensemble Graphics Toolkit

License Release

The Ensemble Graphics Toolkit (EGT) is a free and open-source C++ GUI widget toolkit for Microchip AT91/SAMA5 microprocessors. It is used to develop graphical embedded Linux applications. EGT provides modern and complete GUI functionality, look-and-feel, and performance.

Want to help out or make some changes? See Contributing.

Complete EGT Programmers Manual with API reference is available for the latest version.


  • Anti-aliased 2D vector graphics.
  • Modern C++ design and simplicity.
  • Optimized for Microchip microprocessors running Linux.
  • DRM/KMS, X11, and fbdev backends.
  • libinput, tslib, and evdev input support for mouse, keyboard, and touchscreen.
  • UTF-8 encoding with internationalization and localization support.
  • Support for libplanes and hardware LCD overlay planes.
  • Built in and simple animation support for creating custom effects.
  • A rich and extensible default widget set designed for embedded touchscreens.
  • Multimedia support for video playback, raster images, and vector graphics.
  • Customizable look and feel with themeable widget drawing, colors, and fonts.


To build for a PC, first install required dependencies:

sudo apt-get install build-essential automake autoconf libtool pkg-config \
    libdrm-dev libinput-dev libcairo-dev libjpeg-dev libmagic-dev gettext

Optional, but recommended, dependencies include:

sudo apt-get install librsvg2-dev liblua5.3-dev libcurl4-openssl-dev \
     libxkbcommon-dev xkb-data libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install libasound2-dev libsndfile1-dev

Then, clone the source and build.

git clone --recursive
cd egt

You can run the examples in the examples directory at this point. If you need to compile against the EGT library, or run the compile example below, the simplest option is to simply install the library.

make install

On some systems, when running the install command, you may need root access. For example,

sudo make install

On some systems, the default install path will be under /usr/local/. You may need to follow up the install command by running ldconfig so that the dynamic loader can find the egt library. This may also require root access.

sudo ldconfig


And now comes the obligatory complete EGT application that can be compiled and run (assuming you followed the steps above to build and install the EGT library). This example shows creating the Application object, and then a Window, and a Button on the center of the screen.

#include <egt/ui>

int main(int argc, const char** argv)
    egt::Application app(argc, argv);

    egt::TopWindow window;
    egt::Button button(window, "Press Me");


To link this example application, saved as example.cpp, use g++ and pkgconfig to pull in the required compiler flags.

g++ -std=c++14 example.cpp -o example `pkg-config libegt --cflags --libs` -pthread

Then, run.



Widgets TextBox Example

Widgets CheckBox Example

Widgets Easing Example

Widgets i18n Example

Car Dashboard Example

Animating Images Example


EGT depends on a variety of different libraries. Some of them are required or recommended, and others are optional for conditional features in EGT.


  • libplanes >= 1.0.0
  • libdrm >= 2.4.0
  • lua >= 5.3.1
  • cairo >= 1.14.6
  • fontconfig
  • libinput >= 1.6.3
  • libjpeg
  • libmagic


  • x11 >= 1.6.3
  • xkbcommon
  • tslib >= 1.15
  • gstreamer-1.0 >= 1.8
  • lua >= 5.3.0
  • libcurl >= 4.5
  • librsvg-2.0
  • asound2
  • libsndfile


EGT is released under the terms of the Apache 2 license. See the COPYING file for more information.

You can’t perform that action at this time.