[Unit] Description=Openbox session on the headless Xorg (gives Sunshine something to capture) # Without a window manager/desktop running on :0, Sunshine's x11 capture grabs # an empty black X root window — pairing, NVENC, and input all work but the # client sees only black. This unit renders a session onto :0 so the stream # shows an actual desktop. Only relevant to the X11/NVENC capture backend # (capture = x11); the wlr backend's compositor renders for itself. Requires=xorg-headless.service After=xorg-headless.service PartOf=graphical-session.target [Service] Type=simple Environment=DISPLAY=:0 # Wait for the X server to accept connections before launching the WM. ExecStartPre=/bin/sh -c 'for i in $(seq 1 20); do xset -display :0 -q >/dev/null 2>&1 && exit 0; sleep 0.5; done; exit 1' ExecStart=/usr/bin/openbox-session # Paint a solid root so a connecting client sees an obvious (non-black) desktop. # Leading '-' = best-effort; a missing xsetroot must not fail the unit. ExecStartPost=-/usr/bin/xsetroot -display :0 -solid "#2e3440" Restart=on-failure RestartSec=2s [Install] # Lingering user manager reaches default.target without a graphical login, # matching the headless-boot drop-in pattern used for Sunshine. WantedBy=default.target