+++ title = "Own small widget kit on M5GFX, not LVGL" description = "The UI is drawn with M5GFX into an off-screen buffer, using a small widget kit we own: list, text view, line editor, dialog, Status Bar and Toast. We chose this over LVGL." weight = 2 [extra] docs = true source = "docs/adr/0002-own-widget-kit-on-m5gfx.md" tag = "ADR 0002" +++ The UI is drawn with M5GFX into an off-screen buffer, using a small widget kit we own: list, text view, line editor, dialog, Status Bar and Toast. We chose this over LVGL. LVGL would give us ready-made widgets, but it costs roughly 40–60 KB of RAM on a device with no PSRAM. It would also need to coexist with the Mesh Service, the Wi-Fi stack and TLS, and it brings a large learning surface. Most of our Apps are lists and text on a 240×135 screen, and full control of the UX is a primary goal. ## Consequences - We write and maintain our own widgets. - Switching to LVGL later would mean rewriting every App's view layer.