Skip to content


Switch branches/tags

Latest commit

Git no longer allows, by default, to run git commands if we are not the
owner of the git tree. On side effect is that during a sudo make install
command, as we are root, there is a mismatch of ownership for the git
tree. Git commands return an error and the git_version script returns
To fix this behavior, if we detect that make is run as root and the git
tree is owned by another user, switch to this user to run the
git_version script.

Signed-off-by: Ludovic Desroches <>
Acked-by: Cyrille Pitchen <>

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

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, make some changes, found a bug, or have a question? See Contributing. Send a pull request or open an issue.

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 and X11 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.


For more complete instructions, refer to the Getting Started section of the EGT Programmer's Manual.

To build for a PC, first install required dependencies:

sudo apt install git 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 install librsvg2-dev liblua5.3-dev libcurl4-openssl-dev \
     libxkbcommon-dev xkb-data
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libplplot-dev plplot-driver-cairo
sudo apt 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.

cd examples/basic

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, 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

Easing Animation Example

i18n Example

Car Dashboard Example

Animating Images Example

Monitor Example

Audio Player Example


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