gui-manager

Guides development of the egui-based desktop manager that supervises entangled CLI child processes.

Updated Aug 18, 2026
One-click install
npx skills add https://github.com/doctorspider42/entangled-destop --skill gui-manager-doctorspider42
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gui-manager
Source: https://github.com/doctorspider42/entangled-destop/tree/main/.agents/skills/gui-manager
Command: npx skills add https://github.com/doctorspider42/entangled-destop --skill gui-manager-doctorspider42

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Working on the entangled-manager GUI without breaking its invariants is hard: views must never mutate state, nothing may block the frame loop, child VM processes must survive the manager, and engine/firmware resolution must never ask the user for paths the app can resolve itself. This Skill encodes those architectural rules, form conventions, theme tokens, and WSL backend pitfalls so changes stay consistent. ## Core Features & Use Cases - Architecture guardrails: Documents the Action-based unidirectional data flow (views push intents, only ManagerApp::apply mutates), worker-thread patterns, and child-process supervision rules (own process group, log-file tailing, SIGTERM with 20s grace). - Form and theme conventions: Enforces tooltip-based explanations, single label column via ui::form_scope, native path pickers off the egui thread, and the quantum theme token table in theme.rs. - WSL backend knowledge: Covers engine probing, error translation (execvpe failures, glibc mismatches), digest-pinned engine downloads, and Windows-to-WSL path translation. - Use Case: When adding a new button to a VM card, follow the Skill to add an Action variant, keep the view pure, and verify layout with a --mock --screenshot run. ## Quick Start Load the gui-manager skill before modifying any code in apps/manager, then describe the GUI change you want to make.

Frequently Asked Questions about gui-manager

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new button or action to the entangled-manager GUI?

Add a new Action variant and have the view push it into the shared Vec<Action>; only ManagerApp::apply may mutate state, touch the filesystem, or spawn processes. Views never mutate directly, so adding a button means adding an Action, not editing state in ui code.

How does the GUI run and stop virtual machines?

The manager spawns the entangled CLI as a child process in its own process group, tails output from a log file rather than a pipe, and stops VMs with SIGTERM escalating to a kill after a 20-second grace period. Closing the manager leaves running VMs untouched.

Can the entangled manager run VMs through WSL on Windows?

Yes, the WSL backend runs the Linux entangled binary via wsl.exe with path translation from Windows to /mnt paths. The manager probes for the engine inside the distribution and can download a digest-pinned Linux build when it is missing.

How do I test GUI changes without launching a real VM?

Run cargo run -p entangled-manager -- --mock for a deterministic in-memory UI, and add --screenshot out.png --screenshot-view main to render a surface to a PNG for visual review. Mock mode never scans directories or invokes the entangled CLI.

Why are egui and eframe pinned to version 0.32?

egui/eframe 0.32 is the last series whose MSRV of Rust 1.85 matches the workspace rust-version; 0.33 needs 1.88 and 0.36 needs 1.95. Both must be bumped together with the workspace MSRV, never separately.

Why must file dialogs never run on the egui thread?

Native dialogs are OS-modal and would freeze the frame loop, so picker::open spawns a thread and delivers the answer through a waker channel. Only one dialog runs at a time, and --mock mode intercepts pick requests so screenshots never block.