Account for WAYLAND_SOCKET when detecting Wayland

Fixes #3459.
This commit is contained in:
Kirill Chibisov 2024-02-07 06:41:23 +04:00 committed by GitHub
parent 08fc4099e8
commit 56035e1f13
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 4 deletions

View file

@ -750,8 +750,11 @@ impl<T: 'static> EventLoop<T> {
let backend = match (
attributes.forced_backend,
env::var("WAYLAND_DISPLAY")
.map(|var| !var.is_empty())
.unwrap_or(false),
.ok()
.filter(|var| !var.is_empty())
.or_else(|| env::var("WAYLAND_SOCKET").ok())
.filter(|var| !var.is_empty())
.is_some(),
env::var("DISPLAY")
.map(|var| !var.is_empty())
.unwrap_or(false),
@ -769,9 +772,9 @@ impl<T: 'static> EventLoop<T> {
let msg = if wayland_display && !cfg!(wayland_platform) {
"DISPLAY is not set; note: enable the `winit/wayland` feature to support Wayland"
} else if x11_display && !cfg!(x11_platform) {
"WAYLAND_DISPLAY is not set; note: enable the `winit/x11` feature to support X11"
"neither WAYLAND_DISPLAY nor WAYLAND_SOCKET is set; note: enable the `winit/x11` feature to support X11"
} else {
"neither WAYLAND_DISPLAY nor DISPLAY is set."
"neither WAYLAND_DISPLAY nor WAYLAND_SOCKET nor DISPLAY is set."
};
return Err(EventLoopError::Os(os_error!(OsError::Misc(msg))));
}