Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ubo-gui-client

The Kivy GUI client for ubo-app. It is a thin renderer: it holds no application state and contains no business logic. It connects to the headless core over gRPC, subscribes to the computed view stream, draws it, and dispatches the user's input back as actions.

It is the reference implementation of the client contract — its C/LVGL sibling (ubo_lvgl/) and the TUI (ubo_app/tui/) render the same stream.

Running

uv run ubo-core                      # the headless core, serves 127.0.0.1:50051
uv run --directory ubo_app/gui ubo-gui-client
Flag Meaning Default
--host gRPC server host localhost
--port gRPC server port 50051
-v / --verbose DEBUG logging off

It installs into its own virtualenv, separate from the core's — it depends on headless-kivy and ubo-gui, which the headless core deliberately does not. OTA updates and poe device:deploy install it as a separate wheel. Type-check it with uv run poe typecheck:gui, which targets that venv.

What it renders

The core sends serializable ViewData; nothing callable or Kivy-shaped crosses the wire. view_renderer.py turns each view into widgets:

Area Modules
App shell & lifecycle app.py, __main__.py, splash.py, display.py
gRPC transport client.py
View dispatch view_renderer.py
Menu chrome menu_central.py, menu_header.py, menu_footer.py, menu_notification_handler.py
Input keyboard.py
Device eeprom.py, constants.py, gui_utils.py

widgets/ holds the generic render widgets, registered by kind in GENERIC_RENDER_WIDGETS: qr_code, qr_code_carousel, readings, status, text_viewer, image_viewer, frame_stream — plus chat, home_page, notification_info and the video_viewer.

Two rules that bite

  • The application registry is local. The core's store holds an ApplicationStackItem(application_id=...), never a widget class. Full-screen pages must be registered twice: with register_application(...) in ubo_app/store/ubo_actions.py on the core side, and again in this process's own registry (pages/__init__.py), which exists precisely because the core's registry is not importable from this venv.
  • Kivy work belongs on the main thread. gRPC callbacks arrive on other threads; anything touching widgets has to hop back via @mainthread.

See .claude/rules/coding-style.md for the serializable-state rules this client depends on, and docs/architecture/UI_REDUX_ARCHITECTURE.md for the store/view model.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ubo_gui_client-2.0.1.dev260819103102541025.tar.gz (90.6 kB view details)

Uploaded Source

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_gui_client-2.0.1.dev260819103102541025.tar.gz.

File metadata

File hashes

Hashes for ubo_gui_client-2.0.1.dev260819103102541025.tar.gz
Algorithm Hash digest
SHA256 78f589dcba71581d26a39b85b637075b56d31b99b2b31cf765248d8ba9cea2b9
MD5 7b315b7ab3feb2798d7bfeefe4626148
BLAKE2b-256 23ef81d1c63a30a6b0d7cac234ff0bf3702af2d0a0c0acb87a823456ce3685ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for ubo_gui_client-2.0.1.dev260819103102541025.tar.gz:

Publisher: integration_delivery.yml on ubopod/ubo_app

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ubo_gui_client-2.0.1.dev260819103102541025-py3-none-any.whl.

File metadata

File hashes

Hashes for ubo_gui_client-2.0.1.dev260819103102541025-py3-none-any.whl
Algorithm Hash digest
SHA256 c87e285ebabc70946dfe56ddcfba2174ed79683210a216039ed6400d46c93cc9
MD5 7d7769f51bb327e093769246c5c318d4
BLAKE2b-256 b9f5c7949faadb8a58035e68e49ac97649b1818aa031e10c0520d3a0dc81064a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ubo_gui_client-2.0.1.dev260819103102541025-py3-none-any.whl:

Publisher: integration_delivery.yml on ubopod/ubo_app

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.1.0

2 files

This release

2.0.0

2 files

Supported by

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