LVGL (C) GUI client for Ubo App - communicates via gRPC, renders via libubo_lvgl
Project description
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).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ubo_lvgl_gui_client-2.0.1.dev260711103485451985.tar.gz.
File metadata
- Download URL: ubo_lvgl_gui_client-2.0.1.dev260711103485451985.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34211d39c6f302b192c17c88311882ed0b52d78779a7d2738c19e011c4bcb01f
|
|
| MD5 |
f1f5f02d69eae818c1a26c4f8e4875c6
|
|
| BLAKE2b-256 |
7c6ed72166c543ad57bd948d45360c9356a1d783bb5c04413489d067bee1ac59
|
File details
Details for the file ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl.
File metadata
- Download URL: ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl
- Upload date:
- Size: 23.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c63f996535fbfb6b2f212634e4c07386c68cc42f83a28fa2d7a50390d390d8b
|
|
| MD5 |
b692ea3c278480bab5865b590384fc41
|
|
| BLAKE2b-256 |
c82e7e2df921b39b4ea282ec60bb31bc9d31c8b9245ab00ef724c860c197d1e0
|