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.dev260711103485451985
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.dev260711103485451985.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.6 kB
Release files / ubo_lvgl_gui_client-2.0.1.dev260711103485451985.tar.gz
| Download URL | ubo_lvgl_gui_client-2.0.1.dev260711103485451985.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34211d39c6f302b192c17c88311882ed0b52d78779a7d2738c19e011c4bcb01f
|
|
BLAKE2b-256 checksum How to use checksums |
7c6ed72166c543ad57bd948d45360c9356a1d783bb5c04413489d067bee1ac59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl
| Download URL | ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl |
|---|---|
| Size | 23.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c63f996535fbfb6b2f212634e4c07386c68cc42f83a28fa2d7a50390d390d8b
|
|
BLAKE2b-256 checksum How to use checksums |
c82e7e2df921b39b4ea282ec60bb31bc9d31c8b9245ab00ef724c860c197d1e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|