Skip to content

Widget gallery

Visual contact-sheet of every public widget. Each card shows the widget rendered in isolation.

Widgets are composable parts; a typical app combines four or five of them. See Anatomy of an app and Getting started for end-to-end examples that wire several widgets together.

Captured by tools/widget_screenshot.py (re-run when widget styling changes):

uv run python tools/widget_screenshot.py --all

Signal viewers

  • SignalViewer

    signal_viewer

    Renders a stream's ring buffer as a min/max envelope decimated for 60 fps. Per-channel toggles, a 50/60 Hz mains-hum notch, optional display filters (rectify, DC removal, RMS envelope), pause/rescale. Keyed by stream_name.

Recording and sessions

  • RecordingControls

    recording_controls

    One button per class plus a Record toggle. Clicking a class button writes a LabelEvent and fires your on_gesture callback. Status pill shows IDLE / RECORDING.

  • SessionManager

    session_manager

    Browses recorded sessions (folders or .session.zip), lets the user tick which to include, and returns a TrainingData for @pipeline.train. Per-row class buttons select active classes.

Process management

  • ProcessLauncher

    process_launcher

    Launch / stop external subprocesses (synthetic generator, Virtual Hand, custom acquisition tools) from the GUI. Shows live state per entry; framework adopts children for clean exit.

ML pipeline

  • PipelinePanel

    pipeline_panel

    Train / Predict button row plus state indicator. Buttons grey out automatically based on pipeline.state (no Train while Predicting). Individual buttons: TrainButton, PredictButton.

Output processing

  • PostProcessor

    FilterControl

    Live-tunable post-prediction smoother (Identity / Gaussian / One Euro). Sliders tune parameters in place; Reset clears smoothing history. Pair with output_filter(pose, timestamp=time.monotonic()) inside @pipeline.predict.

Feature selection

  • FeatureSelector

    FeatureSelector

    Live tickbox panel for choosing which feature transforms feed the model. Construct with {name: callable}; the selector concatenates active features along axis 0. Use selector.n_active to size architecture hyperparams.

Branding

  • AppLogo

    app_logo

    The MyoGestic wordmark fit-to-cell with aspect preserved. Drop into a grid cell as a branding header - pairs with the square OS icon core.py wires into the dock / taskbar / title bar.

ML readout

  • PredictionLabel

    prediction_label

    Big, centred class-name readout of the current classifier output. Reads pipeline.predictions["class"], colour-codes via the shared palette, optionally renders the predicted class's probability as a coloured progress bar.

Virtual Hand integration

  • VhiMovementPanel

    VhiMovementPanel

    Compact VHI control palette - auto-refreshes the cached control-hand state from the v2 recording aid (off-thread, throttled) and dispatches button clicks to a handler you supply — normally bus.select(...) on a discrete DOF. Highlights the current movement; greys out while disconnected.

Other widgets

These need richer fixtures (live data, trained models, recorded trials) than the screenshot script produces, so they're listed here and documented in full on the Widgets API page.