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.dev260806103484810252
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.dev260806103484810252.tar.gz | 19.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ubo_lvgl_gui_client-2.0.1.dev260806103484810252-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.3 kB
Release files / ubo_lvgl_gui_client-2.0.1.dev260806103484810252.tar.gz
| Download URL | ubo_lvgl_gui_client-2.0.1.dev260806103484810252.tar.gz |
|---|---|
| Size | 19.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ef960d79f71d49270fc469ec3a16cf24fbd419a67944d20dda81f961fa3e0e20
|
|
BLAKE2b-256 checksum How to use checksums |
0de6e9035e2083e1dac5524e95d7b0bc33f70d89dbbefd4ef0f2135665b412c6
|
| 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.dev260806103484810252-py3-none-any.whl
| Download URL | ubo_lvgl_gui_client-2.0.1.dev260806103484810252-py3-none-any.whl |
|---|---|
| Size | 23.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
581ba353d3080057963c526dbee7c5cf6493889e16c281843eb929c972f04f2b
|
|
BLAKE2b-256 checksum How to use checksums |
3252e9898811894e21c074d049b6b252942971d9524e18bea56f60d908ee8bca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|