I just recently returned to Zig, and started porting the build file (zig cc calls) to latest Zig (build.zig), but struggling to compile the C LVGL to WASM I suspect because LVGL has a few dependencies on standard C bits n bobs, and I cant find a way to reference the C header files needed.
Anyway, just to say that I found the simplicity of LVGL a breath of fresh air. When I first looked at the PinePhone I was struggling to work out how to access the Mali GPU, thinking I'd be doing UI via OpenGL ES. But seeing how well LVGL and the simple frame-buffer approach works, I abandoned that approach all together. Thanks lupyuen!
It is also nice having the UI in WASM for iterative development without the slow deploy to phone hardware.
I was also able to simply extend an LVGL widget to show a 32bit register contents for debugging my SoC work. A huge time saver.
So a big thanks to the LVGL team on the library, and especially the detailed documentation and examples.
There was a thread the other day about Forth on 6051, and someone challenged Forth's utility. I think it fits the same niche: enables quick iteration, exploration, while maintaining a "just right" level of abstraction over the bare metal.
If you want to build something, step 1 is always: empower the developer.
Is "Embedded graphics library" really ambiguous? People in this thread asking about web UIs, GPUs, etc really confuse me. What are they responding to, exactly?
LVGL works with Micropython! Ok disclaimer don’t use the official port it is not good. There is another port https://github.com/lvgl-micropython/lvgl_micropython that has a better setup. I already have it working with custom fonts, and surprisingly Claude can do a reasonable amount of troubleshooting if you get stuck on the API
It's fairly nice just to build a simple embedded UI. There is also a useful editor now, though I haven't used it. It was implemented as a stand-alone program, I would have preferred a VSCode plugin.
It can be a bit difficult to get going on a specific platform, but once you have it going, it's smooth sailing.
Dear Imgui is immediate mode and primarily designed for rendering with a 3D-capable GPU. LVGL is retained mode and designed for running on microcontrollers where there is no GPU available.
https://www.nxp.com/design/design-center/software/developmen...
https://lupyuen.github.io/pinephone-lvgl-zig/
I just recently returned to Zig, and started porting the build file (zig cc calls) to latest Zig (build.zig), but struggling to compile the C LVGL to WASM I suspect because LVGL has a few dependencies on standard C bits n bobs, and I cant find a way to reference the C header files needed.
Anyway, just to say that I found the simplicity of LVGL a breath of fresh air. When I first looked at the PinePhone I was struggling to work out how to access the Mali GPU, thinking I'd be doing UI via OpenGL ES. But seeing how well LVGL and the simple frame-buffer approach works, I abandoned that approach all together. Thanks lupyuen!
It is also nice having the UI in WASM for iterative development without the slow deploy to phone hardware.
I was also able to simply extend an LVGL widget to show a 32bit register contents for debugging my SoC work. A huge time saver.
So a big thanks to the LVGL team on the library, and especially the detailed documentation and examples.
If you want to build something, step 1 is always: empower the developer.
It can be a bit difficult to get going on a specific platform, but once you have it going, it's smooth sailing.
How does it interact with the screen then?