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.
13 lines
766 B
Bash
13 lines
766 B
Bash
# 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
|