GUI (How It Works)

The GUI is an optional Qt (PySide6) front-end.

Important

the GUI does not re-implement the mod/updater logic; it mostly launches the same Python scripts and shows their logs.



Entry points

  • Linux launcher: ../jibo_gui.sh
  • Windows launcher: ../jibo_gui.bat

The GUI module it runs is:

  • python -m gui.main_panel

The implementation is in:

  • ../JiboTools/JiboTools/gui/main_panel.py

Main Panel overview

The main panel UI (form.ui) is loaded at runtime (Qt Widgets, not QML):

  • ../JiboTools/JiboTools/form.ui

MainWindowController wires up widgets and behavior:

  • “Connect” button opens an SSH session to the robot using Paramiko.
  • It reads /var/jibo/identity.json to display the robot name.
  • The panel includes toggles/fields for Home Assistant and AI settings (currently UI-only wiring; the panel mainly focuses on connection + launching tools).

Connection behavior

  • Host/IP comes from the UI field.
  • Credentials are currently fixed to root / jibo in the panel code.
  • UI shows a status dot and swaps images based on connection state.

Tool runner windows (Installer / Updater)

When you click installer/updater from the panel, it spawns a separate “Tool Runner” window:

  • Installer: runs jibo_automod.py
  • Updater: runs jibo_updater.py

The common implementation is:

  • ../JiboTools/JiboTools/gui/tool_runner_window.py

How the tool runner executes scripts

  • Uses QProcess (see ProcessRunner) to run a Python process.
  • Captures merged stdout/stderr and appends it into a log view.
  • Has a Start/Stop button (Stop terminates then kills if needed).

It resolves which Python to use with:

  • resolve_python_invocation() in ../JiboTools/JiboTools/gui/process_runner.py

Resolution order (simplified):

  1. Use repo-local ../.venv/ Python if present.
  2. Otherwise use the current interpreter (useful if launched from Qt Creator).
  3. Windows fallback: py -3.
  4. Linux fallback: python3, then python.

Passing arguments

  • The tool runner has an “Extra args” textbox.
  • For the updater runner specifically, it also has a host field that becomes --ip <host>.

This means the GUI is effectively a thin wrapper over the CLI flags described in 03 - CLI Arguments.

“Open in terminal”

The tool runner can try to spawn an external terminal window with the exact command line it would run.

  • Linux: tries x-terminal-emulator, gnome-terminal, konsole, etc.
  • Windows: uses cmd.exe.

Dependencies

GUI deps live in:

  • ../requirements-gui.txt (PySide6)
  • ../JiboTools/JiboTools/requirements.txt (PySide6 + Paramiko)

The CLI installer launcher ../jibo_automod.sh also auto-creates ../.venv/ and installs ../JiboTools/JiboTools/requirements.txt if you pick GUI mode.

Practical notes / limitations

  • The GUI is great for convenience, but debugging is often easier from CLI because you can see exactly what flags are being passed.
  • The installer still requires RCM mode + USB access; the GUI does not remove that requirement.
  • The updater requires SSH access (meaning: you must already be in developer mode / checkmark boot).