// the find
ImpulseAdventure/GUIslice
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
GUIslice is a pure C GUI framework for embedded touchscreen displays, targeting microcontrollers like ESP32, Arduino, and Raspberry Pi. It ships with a drag-and-drop desktop builder (separate Java app) that generates the layout code, so you draw your UI visually and get C output you drop into your sketch. The target audience is embedded developers who want something between hand-drawing pixels and running a full LVGL setup.
The breadth of hardware support is genuinely impressive — 70+ config files covering ILI9341, ST7735, RA8875, HX8357, and a dozen touchscreen controllers means there's likely a working config for your exact shield. No dynamic memory allocation is a real constraint respected throughout the library, which matters on devices with 8–32KB RAM. The builder generating compilable C code rather than a runtime format means zero interpreter overhead and easy version control of the output. The driver abstraction layer is clean enough that the same application code runs on both an ESP32 TFT_eSPI setup and a Raspberry Pi SDL window, which is useful for desktop development and testing.
The API is very C89-era: everything goes through a large `gslc_tsGui` struct passed by pointer, element IDs are manual integer enums you define yourself, and there's no type safety between element types. The builder is a separate Java Swing app distributed as a jar — not integrated into any IDE, and its own GitHub repo — so the toolchain feels bolted together. UTF-8 and anti-aliased font support are gated to specific drivers (SDL and TFT_eSPI respectively), so if you're on Adafruit-GFX you're stuck with bitmap fonts and ASCII. The Travis CI badge links to a build that no longer runs (Travis dropped free open-source support in 2021), so you can't tell if the current codebase actually builds cleanly on the supported platforms.