From cbdeccd03e6d14797025e8fd951a4b4c4871aa6d Mon Sep 17 00:00:00 2001 From: Breadway Date: Sun, 14 Jun 2026 03:35:23 +0800 Subject: [PATCH] Let the live Hyprland session fall back to software rendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On GPU-less targets (VMs, headless, exotic hardware) wlroots refuses to initialise without a hardware renderer, so the autologin session exec'd Hyprland on tty1 and it died immediately — leaving a blinking cursor and no desktop, while tty2 still showed the (correct) `bos` login. Export WLR_RENDERER_ALLOW_SOFTWARE=1 before exec Hyprland in root's .bash_profile so wlroots may use the llvmpipe software renderer when no GPU renderer exists. On real hardware the hardware renderer is still chosen; this is purely a fallback. Also set WLR_NO_HARDWARE_CURSORS=1 so the pointer isn't invisible in VMs. Both must be real env vars (read at wlroots init), not Hyprland `env=` lines, which apply too late. Co-Authored-By: Claude Opus 4.8 --- iso/airootfs/root/.bash_profile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/iso/airootfs/root/.bash_profile b/iso/airootfs/root/.bash_profile index fd13f6a..9eb149e 100644 --- a/iso/airootfs/root/.bash_profile +++ b/iso/airootfs/root/.bash_profile @@ -1,4 +1,13 @@ # Auto-start Hyprland on tty1 in the live session if [[ "$(tty)" == "/dev/tty1" ]] && [[ -z "$WAYLAND_DISPLAY" ]]; then + # Allow a software-rendering fallback so the live session comes up even + # without a GPU (VMs, headless, exotic hardware). On real hardware wlroots + # still selects the hardware renderer; this only permits llvmpipe when no + # GPU renderer is available. Must be exported before Hyprland starts — + # wlroots reads it at renderer init, earlier than any Hyprland `env=` line. + export WLR_RENDERER_ALLOW_SOFTWARE=1 + # Software cursors: hardware-cursor planes are often unusable in VMs and + # show as invisible/garbled; this is the reliable choice for a live medium. + export WLR_NO_HARDWARE_CURSORS=1 exec Hyprland fi