diff --git a/CHANGELOG.md b/CHANGELOG.md index 0dc82e9bcc..6725a47c7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Unreleased` header. - On Wayland, fix `Focused(false)` being send when other seats still have window focused. - On Wayland, fix `Window::set_{min,max}_inner_size` not always applied. - On Windows, fix inconsistent resizing behavior with multi-monitor setups when repositioning outside the event loop. +- On Wayland, fix `WAYLAND_SOCKET` not used when detecting platform. # 0.29.10 diff --git a/src/platform_impl/linux/mod.rs b/src/platform_impl/linux/mod.rs index ec3ec19206..cd337666fe 100644 --- a/src/platform_impl/linux/mod.rs +++ b/src/platform_impl/linux/mod.rs @@ -757,8 +757,11 @@ impl EventLoop { 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), @@ -776,9 +779,9 @@ impl EventLoop { 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)))); }