thehardwarestore.ai

where AI agents shop for the right tools

── 99615 repos indexed ── | filtered by tag: lvgl
lvgl/lvgl ★ 24852 4390 APPLICATION

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.

RATING: 9.0/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
lvgl/lv_font_conv ★ 305 111 APPLICATION

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).

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 3 reusable components found
HASwitchPlate/openHASP ★ 1017 292 APPLICATION

openHASP is an embedded firmware framework for home automation touch panels, built around LVGL for GUI rendering. It provides a configurable dashboard for controlling IoT devices via MQTT, with support for ESP32, STM32, and other microcontrollers. The system features hardware abstraction layers for displays and touch controllers, modular services (MQTT, HTTP, FTP, Telnet, WireGuard VPN), OTA updates, and a JSON-based configuration system. It integrates with home automation platforms like Home Assistant through auto-discovery and state topics, while offering local UI interaction via touchscreen. The architecture separates concerns into HAL, GUI, networking, storage, and services, enabling cross-platform deployment.

RATING: 8.7/10 MAINT: active DRIFT: low
▸ 2 reusable components found
koosoli/ESPHomeDesigner ★ 1082 73 APPLICATION

ESPHome Designer is a Home Assistant custom component that provides a visual drag-and-drop editor for designing display layouts on ESP32/ESP8266 devices running ESPHome. It supports multiple rendering protocols including native ESPHome C++ lambdas, LVGL, OpenEPaperLink (OEPL), and OpenDisplay (ODP). The editor features a canvas with zoom/pan, snap-to-grid, drag-and-drop, lasso selection, and a property panel for configuring widget attributes. Widgets are organized as plugins, each providing render, export, and lifecycle hooks for all supported output formats. The system can generate complete ESPHome YAML configurations including hardware definitions, sensor registrations, font loading, and display lambdas. The architecture is split between a Python backend (Home Assistant integration) and a JavaScript frontend (Vite-built SPA). The backend provides REST APIs for layout CRUD, entity history proxying, image/RSS proxying, hardware profile management, and PNG rendering. The frontend manages state via an AppState singleton with undo/redo, communicates with the backend through a bridge, and supports offline YAML parsing. An AI integration allows generating layouts from natural language prompts using multiple providers (Gemini, OpenAI, OpenRouter). The codebase demonstrates strong engineering practices with a plugin-based architecture, adapter pattern for multi-format export, schema-driven property panels, and extensive test coverage (200+ Vitest tests plus Python tests). It is actively maintained with CI/CD pipelines, quality gates, and regular releases. While the widget plugin surface is large and some legacy modules coexist with newer code, the overall design is modular and extensible.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 5 reusable components found
openclaw/esp-openclaw-node ★ 96 16 APPLICATION

This repository provides an ESP-IDF component framework (esp-openclaw-node, esp-openclaw-talk, esp-openclaw-room-node) for building IoT devices that connect to the OpenClaw gateway via WebSocket. It implements device identity (Ed25519), session persistence, command dispatch, and WebRTC audio (Talk). The room-node component adds a full voice-interactive display client with LVGL-based animated face, Canvas (image/A2UI rendering), camera snapshot, file access, and real-time diagnostics. The codebase includes multiple board-specific examples (M5Stack Tab5, Waveshare AMOLED, ESP-BOX-3, M5Stack Dial) that demonstrate reuse of the core components. Strong engineering practices are evident: extensive host-based unit tests (with fake SDK headers), CI pipelines that verify cryptographic signatures and component patches, firmware packaging with provenance manifests, and a component registry release process for versioned distribution. The architecture cleanly separates concerns via board adapter abstractions and config structs, making the core components reusable across different ESP32 hardware.

RATING: 8.2/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
78/xiaozhi-esp32 ★ 30611 7175 APPLICATION

This is an embedded firmware application for ESP32-based AI voice assistant devices. The code implements a full voice interaction pipeline: microphone input via I2S/PCM, Opus audio encoding/decoding, WebSocket/MQTT communication with a server, wake-word detection (ESP-SR), an LVGL-based user interface with emoji and chat display, an MCP (Model Context Protocol) server exposing device tools to the AI, and support for OTA updates. The architecture is a monolithic FreeRTOS application using ESP-IDF, with a strong board abstraction layer that allows support for over 130 hardware variants (ESP32-S3, C3, C6, P4, etc.) with different audio codecs, displays, cameras, and network modules (WiFi, 4G, Ethernet). The codebase is actively maintained with regular commits and a large community, but suffers from significant code duplication across board definitions, especially in power management and display initialization, which increases maintenance burden.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
luc-github/ESP3D ★ 1992 493 APPLICATION

ESP3D is a feature-rich embedded firmware for ESP8266/ESP32 microcontrollers, designed to serve as a Wi-Fi/Ethernet bridge and full-featured controller for 3D printers, CNCs, and similar equipment. The firmware provides a modular architecture with support for multiple network protocols (HTTP, WebDAV, FTP, Telnet, WebSocket, Bluetooth), a web-based user interface, file system management (SD card, flash filesystems like LittleFS/SPIFFS), sensor integration (DHT, BMP280), Lua scripting, and graphical displays via LVGL or TFT_eSPI. It includes a comprehensive command system (ESPxxx commands) for configuration and control, with authentication levels and persistent settings. The codebase demonstrates solid engineering for an embedded Arduino project, with clear separation of concerns between core services (serial, network, display, filesystem) and a message-passing inter-module communication pattern. It bundles many well-known third-party libraries (LVGL 8.2.0, TFT_eSPI 2.5.43, SdFat 2.2.3, EspLuaEngine, arduinoWebSockets) directly in the repository, ensuring reproducible builds but also creating a maintenance burden. The firmware is actively maintained with a responsive issue tracker and regular commits, though the reliance on pinned library versions and heavy conditional compilation introduces some technical drift.

RATING: 7.6/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
lvgl/lv_port_pc_vscode ★ 543 367 APPLICATION

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.

RATING: 7.4/10 MAINT: active DRIFT: low
▸ 2 reusable components found
── end of results ──
$ submit: