# A compositor that exists only so Sunshine has something to capture. # mainframe has no desktop: the only connected output (HDMI-A-2) hangs off the # Intel iGPU, while the RTX 3060 that does the encoding drives no monitor at # all. Capturing the real output would mean grabbing on Intel and encoding on # NVIDIA — a cross-GPU copy every frame. A virtual output on the 3060 keeps # capture and NVENC on one card. output HEADLESS-1 mode 1920x1080@60Hz position 0,0 output HEADLESS-1 background #101920 solid_color # Start Xwayland eagerly rather than on first X client. Steam is an X app, and # with the default lazy start DISPLAY does not exist yet when the line below # imports the environment — so Steam launched by Sunshine got # "Unable to open a connection to X" and showed a blank stream. xwayland force # Sunshine is a systemd user unit and inherits nothing from this session, so # hand it the display variables before starting it. exec systemctl --user import-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP exec systemctl --user start sunshine.service # Input arrives from the Moonlight client, so keybinds are worth having even # though nobody is sitting at this machine. Without them the Desktop app # streams an empty screen with no way to open anything. set $mod Mod4 bindsym $mod+Return exec kitty bindsym $mod+d exec wofi --show drun bindsym $mod+Shift+q kill bindsym $mod+Shift+e exec swaymsg exit # Something visible on login, so a working capture is obviously working rather # than indistinguishable from a broken one. exec kitty # No bar, no idle daemon, no lock screen — there is no one sitting here.