diff --git a/crates/gpui_linux/src/linux/platform.rs b/crates/gpui_linux/src/linux/platform.rs index 5da8b5a27f..7bf77a1bc3 100644 --- a/crates/gpui_linux/src/linux/platform.rs +++ b/crates/gpui_linux/src/linux/platform.rs @@ -899,9 +899,13 @@ pub(super) fn is_within_click_distance(a: Point, b: Point) -> bo diff.x.abs() <= DOUBLE_CLICK_DISTANCE && diff.y.abs() <= DOUBLE_CLICK_DISTANCE } +/// Creates an XKB context for keymaps supplied by Wayland or X11. +/// +/// Server keymaps are already resolved and need no local keyboard definitions. +/// Loading default include paths can fail on systems without those files. #[cfg(any(feature = "wayland", feature = "x11"))] pub(super) fn new_xkb_context() -> anyhow::Result { - validate_xkb_context(xkb::Context::new(xkb::CONTEXT_NO_FLAGS)) + validate_xkb_context(xkb::Context::new(xkb::CONTEXT_NO_DEFAULT_INCLUDES)) } #[cfg(any(feature = "wayland", feature = "x11"))] diff --git a/crates/gpui_linux/src/linux/x11/client.rs b/crates/gpui_linux/src/linux/x11/client.rs index 28c4189ca6..3ab9a6e6e4 100644 --- a/crates/gpui_linux/src/linux/x11/client.rs +++ b/crates/gpui_linux/src/linux/x11/client.rs @@ -2847,7 +2847,9 @@ mod tests { } fn test_keymap_with_variant(layouts: &str, variant: &str) -> xkbc::Keymap { - let context = new_xkb_context().expect("test XKB context should initialize"); + // These fixtures compile layout names from local files, unlike server keymaps. + let context = xkbc::Context::new(xkbc::CONTEXT_NO_FLAGS); + assert!(!context.get_raw_ptr().is_null()); xkbc::Keymap::new_from_names( &context, "",