pyobs-polaris

Polaris is a pyobs (documentation) GUI client for telescope fleets, written in C++/Qt/QML. It has no dependency on pyobs-core itself — everything is built from XMPP presence and disco#info discovered live over the wire (QXmpp in place of Strophe.js).

Example configuration

There’s no module-side YAML config — this is a desktop app a user logs into directly. What you configure instead:

At runtime, a user logs in with a JID + password against an ejabberd server (credentials optionally remembered via the OS keychain, QtKeychain-backed). A plugins directory (AppSettings::pluginsDirectory) can point at a folder of external *.qml widget files — each exposing exactly one of targetInterface/targetJid, plus iconGlyph, label, widget — auto-loaded at startup; see examples/plugins/ for a worked example.

Available classes

Generated from src/ via Doxygen + doxysphinx — see ../Doxyfile. qml/ isn’t covered here (Doxygen doesn’t parse QML); the qml/views/ screens are documented in “Views” below instead.

Views

One QML view per top-level screen (qml/views/*.qml). No screenshots yet — written from source, not a running instance; add those as a follow-up.

RoofView

Drives IRoof — status readout plus Open/Close/Stop.

ModeView

Drives IMode.

WeatherView

Drives IWeather.

AutoFocusView

Drives IAutoFocus.

AutoGuidingView

Drives IAutoGuiding.

AcquisitionView

Drives IAcquisition.

TelescopeView

Drives ITelescope — Init/Park/Stop, move-to-coordinates (RA/Dec, Alt/Az), a compass widget for directional offsets, sexagesimal input parsing, and SIMBAD/JPL Horizons name/ephemeris resolution for the Move fields.

CameraView

Drives ICamera — exposure control, live IExposure state, and FITS decode/display (fits::FitsImage via cfitsio) of the grabbed image, plus shared IFilters/IFocuser/ITemperatures sidebar panels.

StatusView

Generic per-module drill-down — every currently-online module’s full capability/state, rendered from its own disco#info schema with no per-interface code (mirrors KeyValueCard.vue’s field ordering and color-coding for nested values).

EventsView

Every incoming event, not just log lines — a generic feed for anything a module publishes.

LogsView

Live, filterable log stream.

ShellView

A generic RPC console: module.command(arg1, arg2, ...) syntax, parameterized command execution against any connected module’s live command schema.

SettingsView

Connection settings — saved accounts (keychain-backed), plugins directory, “Test connection”.

Keyboard shortcuts

None bound globally as of this writing.