$ account lvgl
LVGL (Light and Versatile Graphics Library) is an embedded GUI library written in C, providing a comprehensive widget toolkit (30+ widgets), style system, layout managers (flex, grid, split), animation framework, and multiple rendering backends (software, GPU-accelerated via VG-Lite, NanoVG, OpenGL ES, and hardware-specific backends for various MCU/MPU platforms). It is designed for resource-constrained devices with a small memory footprint (~100kB RAM for typical UIs) and supports a wide range of display drivers (SDL, Wayland, DRM, UEFI, Windows, and many embedded display controllers) and input devices (touch, keypad, mouse, gestures). The library features a public/private header pattern for encapsulation, a configurable build system via Kconfig, extensive Unity-based test suites with screenshot comparison, and a GDB plugin for runtime introspection. It is actively maintained with frequent commits, comprehensive CI/CD, and a large ecosystem of examples and demos.
This repository is a VSCode-based development port of the LVGL embedded GUI library for PC simulation. It provides a complete environment to develop and test LVGL applications on Linux, Windows, and macOS without embedded hardware. The codebase includes a CMake build system, an SDL2-based hardware abstraction layer (HAL) for display and input devices (mouse, keyboard, touchwheel), and optional FreeRTOS integration for simulating real-time behavior. The main entry points are `src/main.c` (single-threaded with a `while(1)` loop) and `src/freertos_main.c` (FreeRTOS task-based), both using the same `sdl_hal_init()` to set up LVGL. The project is essentially a thin wrapper that initializes LVGL, sets up SDL drivers, and runs a demo or user application. Its architecture is straightforward: LVGL submodule, SDL library, and application glue code. The repository is actively maintained, with recent commits and issue triage, and uses current versions of LVGL (v10.0.0) and SDL2. It is a solid but unexceptional project, serving its purpose as a convenient PC simulator for LVGL development.
lv_font_conv is a Node.js-based command-line tool (with a web interface) that converts vector fonts (TTF, OTF, etc.) into bitmap fonts optimized for embedded systems, particularly the LVGL graphics library. It processes font files using opentype.js and an Emscripten-compiled FreeType WebAssembly module to extract glyph metrics and rasterize bitmaps. The tool supports subsetting, merging multiple fonts, kerning preservation, and configurable output formats (raw binary, LVGL-specific C arrays, and debug dumps) with adjustable bits-per-pixel (1-4) and optional RLE/XOR compression. The architecture follows a modular pipeline: argument parsing delegates to font data collection, which feeds into conversion logic that builds font tables (head, cmap, glyf, loca, kern) before format-specific writers produce the final output. Key entry points are the CLI script (lv_font_conv.js) and the web interface (web/index.html via parcel/bundler).