Add runtime status checker + headless/X11 docs; distro-support refinements
- status.sh: runtime health check (service state, boot wiring, display backend auto-detect, encoder, ports, web UI, /dev/uinput, pairing) ending in a g2g verdict or concrete TODO list
- docs: TROUBLESHOOTING §12 (headless graphical-session.target boot trap) + §13 (X11/NVENC path & stale wlr drop-in env conflict); ARCHITECTURE capture-backend comparison; FOLLOWUPS P3 (installer X11/Ubuntu support); README diagnostics pointer
- lib/{config,packages,permissions,service}.sh, files/sway-headless.service: in-progress Debian/Ubuntu + headless support refinements
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -162,6 +162,35 @@ Moonlight tears down the stream
|
||||
|
||||
---
|
||||
|
||||
## Headless capture backends: wlr vs X11/NVENC
|
||||
|
||||
The installer's headless mode assumes **wlr** (`capture = wlr`) on Hyprland —
|
||||
that's the runtime flow diagrammed above. There is a second headless backend,
|
||||
used on hosts that don't run Hyprland (e.g. Ubuntu) or that want a guaranteed
|
||||
NVIDIA GL context for NVENC: **X11 capture of a headless Xorg**.
|
||||
|
||||
| | wlr path (installer default) | X11/NVENC path (manual) |
|
||||
|---|---|---|
|
||||
| Compositor | Hyprland (or sway-headless on a server) | headless Xorg on `:0` |
|
||||
| `sunshine.conf` | `capture = wlr`, `output_name = HEADLESS-N` | `capture = x11`, `output_name = 0` |
|
||||
| Display unit | the Hyprland/sway session | `xorg-headless.service` (user unit) |
|
||||
| Per-client resize | yes — `global_prep_cmd` do/undo hooks | no — Xorg has a fixed `MetaModes` resolution |
|
||||
| How the display is faked | wlroots headless output | NVIDIA `ConnectedMonitor` + `ModeValidation` (TwinView) |
|
||||
| Service env drop-in | inherits Wayland env | pins `DISPLAY=:0`, `XDG_SESSION_TYPE=x11` |
|
||||
|
||||
The X11/NVENC path is the systemd-service form of the upstream "Remote SSH
|
||||
Headless Setup" guide. It trades per-client resolution adaptation (the wlr
|
||||
path's main feature) for a simpler, compositor-free capture that the NVIDIA
|
||||
driver accelerates directly. Input injection is identical for both — `input`
|
||||
group + `60-sunshine.rules` on `/dev/uinput`.
|
||||
|
||||
Both backends share the same boot caveat: on a headless host the Sunshine unit
|
||||
must be wired into `default.target`, not `graphical-session.target`, or it
|
||||
never auto-starts. See TROUBLESHOOTING.md §12–13 for the drop-ins and the
|
||||
alias-merge gotcha that lets a stale wlr drop-in poison the X11 environment.
|
||||
|
||||
---
|
||||
|
||||
## Cert pipeline
|
||||
|
||||
A separate one-time bootstrap creates the CA in 1Password. Every host then
|
||||
@@ -265,6 +294,7 @@ verify.
|
||||
omarchy-moonlight/
|
||||
├── install.sh Orchestrator
|
||||
├── uninstall.sh Reverse install (preserves user data by default)
|
||||
├── status.sh Runtime health check (what's running + g2g verdict)
|
||||
├── README.md User-facing install + usage
|
||||
├── scripts/
|
||||
│ └── cert-bootstrap.sh One-time CA generation + 1P upload
|
||||
|
||||
Reference in New Issue
Block a user