Skip to main content

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.1.0.tar.gz (90.4 kB view details)

Uploaded Source

Built Distribution

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

ubo_gui_client-2.1.0-py3-none-any.whl (104.9 kB view details)

Uploaded Python 3

File details

Details for the file ubo_gui_client-2.1.0.tar.gz.

File metadata

  • Download URL: ubo_gui_client-2.1.0.tar.gz
  • Upload date:
  • Size: 90.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ubo_gui_client-2.1.0.tar.gz
Algorithm Hash digest
SHA256 255f364aa6a94b53178c1092c9bf5617af12a617ba48a728cc4198245a3cd2b3
MD5 146206d1595458eacbcaf1f61022c0eb
BLAKE2b-256 1dd0f7785fc72524b3728d9c65def3f880565df07ce08d9cd5d50175b2fd9ef1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ubo_gui_client-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 104.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ubo_gui_client-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6304f34db5814ff19064bbb2fde7fc697f56500227a1e7f8c728653619067317
MD5 5eede144503c518ca99905e139d6a597
BLAKE2b-256 03bcefc0b0f162483006dfa0550f3ebbde5413e467842d116130077e35317fa9

See more details on using hashes here.

Provenance

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

This release

2.1.0 This release

2 files

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