A lightweight drag & drop GUI framework in C for embedded touchscreen displays on Arduino, Raspberry Pi, ESP32, and other microcontrollers.
GUIslice is a lightweight GUI framework written in C for creating graphical user interfaces on embedded touchscreen displays. It solves the problem of building interactive UIs for resource-constrained devices like Arduino, Raspberry Pi, and ESP32 by providing a drag & drop builder and a cross-platform library that works with multiple display drivers.
Embedded developers, hobbyists, and makers working on projects with microcontrollers (Arduino, ESP32, Raspberry Pi) who need to add touchscreen GUIs without complex programming or proprietary tools.
Developers choose GUIslice for its open-source MIT license, hardware-agnostic design, and visual builder that simplifies GUI creation while maintaining low memory footprint and broad compatibility across displays and controllers.
GUIslice drag & drop embedded GUI in C for touchscreen TFT on Arduino, Raspberry Pi, ARM, ESP8266 / ESP32 / M5stack using Adafruit-GFX / TFT_eSPI / UTFT / SDL
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes a cross-platform desktop application (Windows, Linux, Mac) for designing GUIs visually, generating layout code without manual programming, as highlighted in the README.
Compatible with a wide range of microcontrollers like Arduino, ESP32, Raspberry Pi, and displays including ILI9341 and ST7735, detailed in the features list.
Offers a comprehensive library of widgets such as buttons, sliders, graphs, and multi-page interfaces, enabling complex embedded UIs without reinventing the wheel.
Written in pure C with no dynamic memory allocation, making it suitable for resource-constrained environments common in embedded systems, as stated in the platform independence section.
Lacks support for advanced graphics like anti-aliasing (only available in specific modes like TFT_eSPI) and hardware acceleration, focusing on basic embedded displays with trade-offs in visual polish.
Setting up for different display libraries and touch controllers requires manual tweaking of config files, which can be error-prone and daunting for newcomers, despite the documentation.
As a C library, it doesn't leverage modern C++ features and has a smaller ecosystem of third-party extensions compared to alternatives like LVGL, limiting flexibility for advanced use cases.