This release is a pre-release and may not be stable for production use.
ubo-lvgl-gui-client
Python launcher and gRPC bridge for the LVGL (C) GUI renderer. It connects to the
ubo-core gRPC server, translates ViewData/StatusBarData into calls on the C
renderer (libubo_lvgl) via CFFI, forwards keypad input, and answers screenshot
requests.
Run (from the repo root):
uv run ubo-core # serves 127.0.0.1:50051
uv run --directory ubo_app/lvgl_gui python -m ubo_lvgl_gui_client --backend sdl
Modules: bridge.py (CFFI ↔ C structs), client.py (gRPC subscribe/reconnect),
view_translator.py (betterproto → bridge), keyboard.py, screenshot.py,
__main__.py.
Transports
The client can reach ubo-core over two wire transports, selected at launch:
grpc(default) — native gRPC over HTTP/2 (UboRPCClient, grpclib), connecting directly to the core's gRPC port (--host/--port).web-grpc— gRPC-Web over HTTP/1.1 through an Envoy proxy (the same/grpcendpoint the web-UI uses, default Envoy port50052). Intended for resource-constrained targets where an HTTP/2 gRPC stack is impractical.
Select via flags or environment variables:
# native gRPC (default)
python -m ubo_lvgl_gui_client --transport grpc --host ubo-r.local --port 50051
# gRPC-Web via Envoy
UBO_LVGL_GUI_TRANSPORT=web-grpc \
UBO_LVGL_GUI_WEB_GRPC_URL=http://ubo-r.local:50052/grpc \
python -m ubo_lvgl_gui_client
Only the wire layer differs — request/response bodies are the identical protobuf
messages, so the betterproto bindings are reused for both. grpc_web_frame.py
holds the dependency-free framing codec and is the portability boundary for
the eventual ESP32 (C) port: that module maps 1:1 to a C buffer-and-drain loop
(swap betterproto for nanopb and httpx for esp_http_client).
See ubo_lvgl/README.md at the repo root for the full architecture, build,
and run guide (the C renderer is the main component).
Metadata
Release files for ubo-lvgl-gui-client 2.0.1.dev260811103975110156
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ubo_lvgl_gui_client-2.0.1.dev260811103975110156.tar.gz | 19.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ubo_lvgl_gui_client-2.0.1.dev260811103975110156-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.3 kB
Release files / ubo_lvgl_gui_client-2.0.1.dev260811103975110156.tar.gz
| Download URL | ubo_lvgl_gui_client-2.0.1.dev260811103975110156.tar.gz |
|---|---|
| Size | 19.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ef95a47cf69901ebb1854fb930c8ab19d1b0af37de1382cd3fd0aa0a39f7bcea
|
|
BLAKE2b-256 checksum How to use checksums |
14ed60f4e02af091e44c22fd2e639bdb37e8a962f60f7974914a54ce964f25cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ubo_lvgl_gui_client-2.0.1.dev260811103975110156-py3-none-any.whl
| Download URL | ubo_lvgl_gui_client-2.0.1.dev260811103975110156-py3-none-any.whl |
|---|---|
| Size | 23.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c0055a6bcdb0693c6bd9d935e68f03905ff0c51c0bb45380a86ce6a75ccefd18
|
|
BLAKE2b-256 checksum How to use checksums |
38bda379f311ed20bf8f03db929061a4aeb5429521dd4247f17252ec1e4c6d98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|