GUI Reference — sysreseval

Launching

source venv/bin/activate && python3 src/sysreseval.py   # dev
sysreseval                                              # production

One instance per user. A PID file at /tmp/sysreseval-{uid}.pid kills any prior instance on startup.

Opening a project

File → Open Project (or the + tab) shows a dialog built from sre list --with-titles. Leaves display each lab’s translated title (from per-directory titles.json sidecars, generated by sre make-titles), falling back to the filename without .py. If the lab’s Flavor sets flavor_form_at_startup = True, a form runs first. A progress dialog then tracks image pulls and container starts (JSON on stderr from sre start); the project tab appears when every machine is up.

During an exam, Open Project is disabled — only pre-authorised exam labs open automatically.

Project tabs

Tab

Content

Schema

SVG topology rendered by graphviz at lab start. Scroll = zoom, click-drag = pan.

Informations

Markdown lab description from self.informations in NetScheme.__init__().

Machines

Per-machine state (polled from Kathara every 1 s), NAT network, ports, plus a Connect button opening an external terminal.

Questions

Three types: question_text (free text), question_form (inline @@{field:regex}@@ or @@{field:>opt1|opt2}@@), question_dummy (display only). Persisted to answers/answers.json on every edit.

Evaluation

Last grade table + Start evaluation button. Letter grades (OK/MEH/FAIL) appear when the lab sets no_mark_on_self_grade. A countdown replaces the button while delay_between_self_grade is active.

Terminals

Embedded terminals per machine, launched via params.terminal_cmd_prefix.

answers/answers.json also carries metadata (hostname, login, fullname, email, language, answers_updated_at, plus exam_* fields in exam mode); see Archive format for the full schema.

Start evaluation runs sre eval --auto-eval in a background thread. The periodic background eval (eval_interval_without_exam_mode) and eval_before_exit run plain sre eval (no cooldown, no log line, no stdout).

Exam mode

When /var/lib/sre/exam.json exists, the GUI switches modes: File → Open / Close / Close All are disabled, and answers re-save with an updated exam_time_remaining on every exam-config change.

Phase

Trigger

Shows / actions

Waiting

now < start_after

SRE logo + countdown to start_after. Calls sre pre-start-exam once ~60 s before start_after.

Active

start_after now < end and exam projects up

Project tabs + remaining-time countdown. Calls sre start-exam once on entry, sre eval-exam every eval_interval; re-calls pre-start-exam if labs changes.

Ended

now end_before, or now started_at + duration

Calls sre eval-exam then sre end-exam once; displays the That’s All Folks logo.

Settings

File → Settings (persisted in ~/.config/sysreseval, INI):

Section

Setting

Default

Effect / applies

Interface

Font size

10 pt

Menus and dialog text; immediate

Terminal

Font size

12 pt

Terminals opened after the change

Terminal

Color scheme

Black on White

black_on_white / white_on_black; new terminals

Schema

Lines

Straight

Straight or curved edges; next lab open

Schema

Spacing

3 (0–9)

Node spacing; next lab open

Schema

Nodes

Shapes

Icons or geometric shapes; next lab open

Content

Font size

12 pt

Informations + Questions panes; immediate