feat(vmgui): GUI launcher command, VMX optional

Add top-level `vmgui` to open the VMware Workstation GUI (renamed from the
earlier `vm open`). --vmx is optional: with it the GUI opens that VM, without
it the GUI starts bare. Power-on/fullscreen flags ignored (with a notice) when
no VMX is given. Needs an X display — sudo -u ci-runner strips $DISPLAY, so
--display / xhost; see runbook §4.7. 9 tests; suite green ≥90%.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-08 00:15:22 +02:00
parent 461eb3f8de
commit 0e963f2194
4 changed files with 68 additions and 34 deletions
+7 -4
View File
@@ -69,7 +69,7 @@ The script defines two helpers:
| `ci artifacts collect ...` | copy artifacts out of a guest | §4 |
| `ci vm remove --vmx ...` | stop + delete one clone | §4 |
| `ci vm cleanup` | sweep orphaned clones + stale locks | §4 / §6 |
| `ci vm open --vmx ...` | open a VMX in the VMware Workstation GUI | §4 |
| `ci vmgui --vmx ...` | open a VMX in the VMware Workstation GUI | §4 |
| `ci creds set --user ...` | store guest credentials in keyring | §5 |
| `ci template deploy-linux` | build the Linux template VM | §5 |
| `ci template prepare-linux` | provision Linux template over SSH | §5 |
@@ -221,9 +221,12 @@ so you can watch/poke a clone by hand.
xhost +SI:localuser:ci-runner
# then open the VMX as ci-runner, forcing the display:
ci vm open --vmx /var/lib/ci/build-vms/Clone_dbg-1_*/Clone_dbg-1_*.vmx --display :0
ci vm open --vmx <path> --display :0 --power-on # also power it on (-x)
ci vm open --vmx <path> --display :0 --fullscreen # power on + fullscreen (-X)
ci vmgui --vmx /var/lib/ci/build-vms/Clone_dbg-1_*/Clone_dbg-1_*.vmx --display :0
ci vmgui --vmx <path> --display :0 --power-on # also power it on (-x)
ci vmgui --vmx <path> --display :0 --fullscreen # power on + fullscreen (-X)
# bare GUI, no VM loaded (just open Workstation):
ci vmgui --display :0
```
The GUI needs an X display; `sudo -u ci-runner` strips `$DISPLAY`, so pass
`--display :0` (or export `DISPLAY`). Other flags: `--new-window` (`-n`),