LVGL
LVGL is a library that enables advanced GUIs on embedded devices with limited resources. It can run on as little as a 16MHz CPU, 64KB of flash, and 16KB of RAM. On a Pico with a 125MHz CPU, 2MB of flash, and 264KB of SRAM, you have plenty of headroom!
Despite its low resource requirements, LVGL offers very high expressive power. The following snapshot is from one of LVGL's sample programs:
(from the LVGL documentation)
When you operate the sliders, a Bezier curve is drawn in real time on the graph, with the values as control points. Clicking the play button on the right animates the red square along the curve at a speed corresponding to the curve. You can see an actual animation here. It's amazing that you can implement exactly the same GUI on your own microcontroller!
What's even more impressive is that LVGL is not just for practical use, but also has a playful visual style. For example, when you click a button, you can add effects like a soft expansion. It's perfect for consumer-oriented UIs.
Porting to various platforms is also easy, following Connecting LVGL to Your Hardware. pico-jxglib benefits from this flexibility.