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.dev260819103102489955.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.dev260819103102489955.tar.gz.

File metadata

File hashes

Hashes for ubo_gui_client-2.0.1.dev260819103102489955.tar.gz
Algorithm Hash digest
SHA256 5cf444e216da269be94954f16bf2d4c235df78dd40ba8556f50ea1b6e33ab410
MD5 e3a64746e9784f3c998844405c62fb87
BLAKE2b-256 9be7a057a10c0eafe245370cdf05da30e1c5bed301d3c20d9cc0fbdfde992c39

See more details on using hashes here.

Provenance

The following attestation bundles were made for ubo_gui_client-2.0.1.dev260819103102489955.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.dev260819103102489955-py3-none-any.whl.

File metadata

File hashes

Hashes for ubo_gui_client-2.0.1.dev260819103102489955-py3-none-any.whl
Algorithm Hash digest
SHA256 9e243e3e1cf714742a31e7b5cae1e9c0b00f9fc7e0c911fef93d27df0e6b778e
MD5 1b0aaf9ebe93e33efb6bb72b5b9e3ba7
BLAKE2b-256 4d55898adbd39ebb462840e784339c04c9e3d70d4eb2a75fbeda0b6f02190c8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ubo_gui_client-2.0.1.dev260819103102489955-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