From 1037fc063017fcae14d103901c10f9b9dd4bebdf Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Thu, 14 May 2026 19:08:24 +0200 Subject: [PATCH] wl_backend: respect XKB_DEFAULT_* env vars for keyboard layout Read XKB_DEFAULT_LAYOUT, XKB_DEFAULT_VARIANT, XKB_DEFAULT_OPTIONS, XKB_DEFAULT_MODEL, and XKB_DEFAULT_RULES from environment when creating the default keymap. Set these to match your layout (e.g. XKB_DEFAULT_LAYOUT=us XKB_DEFAULT_VARIANT=dvorak). --- src/backend/wayland/wl_backend.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index 1741b25..2ee5e15 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -2525,8 +2525,15 @@ wl_display_open(const char *name) { struct xkb_context *xkb_ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS); if (xkb_ctx) { + struct xkb_rule_names rules = { + .rules = getenv("XKB_DEFAULT_RULES"), + .model = getenv("XKB_DEFAULT_MODEL"), + .layout = getenv("XKB_DEFAULT_LAYOUT"), + .variant = getenv("XKB_DEFAULT_VARIANT"), + .options = getenv("XKB_DEFAULT_OPTIONS"), + }; wl_state.xkb_keymap = xkb_keymap_new_from_names( - xkb_ctx, NULL, XKB_KEYMAP_COMPILE_NO_FLAGS); + xkb_ctx, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS); xkb_context_unref(xkb_ctx); if (wl_state.xkb_keymap) { wwarning("wl_backend: default XKB keymap created for key binding resolution");