Linux: default to XWayland for file drag-and-drop on Wayland desktops

This commit is contained in:
Dylan M. Taylor authored and bherbruck committed 2026-10-10 10:50:10 -04:00
1 parent 365879c722
commit 52d2936f94
3 files changed
+15

No files matched your search

Generated
+1
View File
@@ -3068,6 +3068,7 @@ dependencies = [
"serde_json",
"solvecraft-engine",
"solvecraft-ui-egui",
"winit",
]
[[package]]
+3
View File
@@ -18,3 +18,6 @@ egui = { workspace = true }
serde_json = { workspace = true }
log = { workspace = true }
rfd = { workspace = true }
[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
winit = { version = "0.30", default-features = false, features = ["x11"] }
+11
View File
@@ -132,6 +132,17 @@ fn main() -> eframe::Result {
multisampling: samples,
..Default::default()
};
let mut options = options;
#[cfg(all(unix, not(target_os = "macos")))]
// winit has no file drag-and-drop on Wayland (only on X11), so dropping files from the file
// manager showed a "no" cursor. Run through XWayland when it's there; SOLVECRAFT_WAYLAND=1
// keeps the native Wayland backend.
if std::env::var_os("DISPLAY").is_some() && std::env::var_os("SOLVECRAFT_WAYLAND").is_none() {
options.event_loop_builder = Some(Box::new(|b| {
use winit::platform::x11::EventLoopBuilderExtX11;
b.with_x11();
}));
}
eframe::run_native(
"SolveCraft",
options,