fix(nescope): give Xwayland the GL driver; a default browser in the image (#460)

- **nescope:** smithay spawned Xwayland with an empty environment, so
Xwayland never saw the GL driver selection the box sets
(`MESA_LOADER_DRIVER_OVERRIDE`, `GALLIUM_DRIVER`,
`__GLX_VENDOR_LIBRARY_NAME`). glamor then found no driver for the card
(`virtio_gpu: driver missing`), fell back to software, and the server
offered no GLX — any X11 client asking for a GLX visual failed
(`glXChooseVisual failed`). Those three variables are now passed
through.
- **Image:** `chromium` and `xdg-utils`, so applications that open
sign-in pages, OAuth flows or links have somewhere to send them.

Verified by hand in a box: with the nescope change, an X11 client that
previously died at `glXChooseVisual` started and drew.
This commit is contained in:
Wanjohi
2026-10-25 12:04:30 +00:00
committed by GitHub
2 changed files with 10 additions and 1 deletions
+9 -1
View File
@@ -438,7 +438,15 @@ impl NescopeState {
let (xwayland, client) = XWayland::spawn(
&self.display_handle,
display,
std::iter::empty::<(String, String)>(),
// The GL selection the box was given, or Xwayland's glamor cannot
// find a driver for the card, falls back to software, and offers
// no GLX: Steam then dies on glXChooseVisual.
std::env::vars().filter(|(k, _)| {
matches!(
k.as_str(),
"MESA_LOADER_DRIVER_OVERRIDE" | "GALLIUM_DRIVER" | "__GLX_VENDOR_LIBRARY_NAME"
)
}),
true,
std::process::Stdio::null(), // XWayland stdout (very noisy)
std::process::Stdio::null(), // XWayland stderr (very noisy)
+1
View File
@@ -398,6 +398,7 @@ RUN pacman -Syu --noconfirm --needed \
python-xlib python-urllib3 python-pyzstd \
libvpx speex libtheora libvdpau jsoncpp \
strace lsof less \
chromium xdg-utils \
&& rm -f /usr/share/libalpm/hooks/dbus-reload.hook \
&& pacman -Rdd --noconfirm systemd systemd-sysvcompat \
&& pacman -Scc --noconfirm