Skip to main content

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 /grpc endpoint the web-UI uses, default Envoy port 50052). 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


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

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file ubo_lvgl_gui_client-2.0.1.dev260711103485451985.tar.gz.

File metadata

File hashes

Hashes for ubo_lvgl_gui_client-2.0.1.dev260711103485451985.tar.gz
Algorithm Hash digest
SHA256 34211d39c6f302b192c17c88311882ed0b52d78779a7d2738c19e011c4bcb01f
MD5 f1f5f02d69eae818c1a26c4f8e4875c6
BLAKE2b-256 7c6ed72166c543ad57bd948d45360c9356a1d783bb5c04413489d067bee1ac59

See more details on using hashes here.

File details

Details for the file ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl.

File metadata

File hashes

Hashes for ubo_lvgl_gui_client-2.0.1.dev260711103485451985-py3-none-any.whl
Algorithm Hash digest
SHA256 4c63f996535fbfb6b2f212634e4c07386c68cc42f83a28fa2d7a50390d390d8b
MD5 b692ea3c278480bab5865b590384fc41
BLAKE2b-256 c82e7e2df921b39b4ea282ec60bb31bc9d31c8b9245ab00ef724c860c197d1e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page