Decisions · ADR 0002

Own small widget kit on M5GFX, not LVGL

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.

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.

This page is generated from docs/adr/0002-own-widget-kit-on-m5gfx.md in the repository. To change it, change that file and run site/tools/gen_dev_docs.py.