Headless Quickshell previews
This directory provides a reproducible Docker wrapper around
qsmcp. It renders a Quickshell Item to a
PNG with Qt's grabToImage() without connecting to the host Wayland session.
Both nixpkgs and qsmcp are pinned in Dockerfile. The runner uses
docker create plus docker cp rather than bind mounts, so it also works with
rootless/remote daemons whose mount namespace cannot see the checkout.
Smoke test
Start Docker, then run from the repository root:
./tools/quickshell-preview/render.sh
The default output is:
/tmp/homelab-quickshell-preview/smoke.png
Render another Item-rooted component
./tools/quickshell-preview/render.sh \
tests/DenseBarHeadless.qml \
.artifacts/quickshell-preview/dense-bar-1920.png \
1920 164
The component path is relative to dotfiles/quickshell. Keep production
PanelWindow wrappers thin and put their visual content in an Item component
so it can be rendered through this offscreen path.
PanelWindow-rooted previews require a nested compositor and are intentionally
outside this first smoke-test image.