feat(gui): add optional tkinter and Qt6 desktop dashboards
Add two optional windowed frontends over the same local state the TUI and web console read: `enodia-sentinel gui` (stdlib tkinter) and `enodia-sentinel gui-qt` (PySide6, new `[qt]` extra). Both share `gui/model.py`, a GUI-free presentation model over `tui.collect_model`, so every formatter is unit-testable without a display server. Only `app.py` and `qt_app.py` import GUI libraries, enforced by import-guard tests mirroring the tray applet's boundary. Tabs cover status, alerts, incidents, posture, integrity, response plans, and the event tail, plus daemon-control buttons via systemctl. Response plans are display-only; the GUIs never execute containment commands. Core runtime dependencies stay empty. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JX86xeoBJVBb16qHkDf53K
This commit is contained in:
parent
9e3575461b
commit
457c7604ba
15 changed files with 1270 additions and 0 deletions
36
README.md
36
README.md
|
|
@ -289,6 +289,42 @@ enodia-sentinel completion bash > ~/.local/share/bash-completion/completions/eno
|
|||
enodia-sentinel completion zsh > ~/.zfunc/_enodia-sentinel
|
||||
```
|
||||
|
||||
### Desktop GUI (optional)
|
||||
|
||||
A windowed desktop dashboard is available using only the stdlib `tkinter`
|
||||
module (your distro may package it separately, e.g. `python-tk` or
|
||||
`python-tkinter`). It is an optional frontend — the daemon and core agent
|
||||
remain stdlib-only.
|
||||
|
||||
```bash
|
||||
enodia-sentinel gui
|
||||
# or, when installed from pyproject metadata:
|
||||
enodia-sentinel-gui
|
||||
```
|
||||
|
||||
The GUI reuses the same local state as the TUI and web console and adds
|
||||
daemon-control buttons: start, stop, restart, quick check, open dashboard, and
|
||||
periodic refresh. Tabs cover status, alerts, incidents, posture findings,
|
||||
integrity/watchdog state, dry-run response plans, and the event tail. Response
|
||||
plans are read-only; the GUI never executes containment commands.
|
||||
|
||||
### Qt desktop GUI (optional)
|
||||
|
||||
A richer Qt6 desktop dashboard is available with the `[qt]` optional extra
|
||||
(`PySide6`). It reuses the same data model as the tkinter GUI but adds a
|
||||
modern native look, resizable table columns, a response-plan detail pane, and
|
||||
threaded background refresh.
|
||||
|
||||
```bash
|
||||
pip install 'enodia-sentinel[qt]'
|
||||
enodia-sentinel gui-qt
|
||||
# or:
|
||||
enodia-sentinel-gui-qt
|
||||
```
|
||||
|
||||
Like the tray applet and tkinter GUI, this is an optional frontend and does
|
||||
not change the core agent's zero-dependency design.
|
||||
|
||||
### Desktop tray (optional)
|
||||
|
||||
A lightweight system-tray applet is available for desktop installs. It is an
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue