diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d66f919b4..21a8639f82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -223,6 +223,11 @@ set_package_properties(XKB PROPERTIES TYPE REQUIRED PURPOSE "Required for building KWin with Wayland support" ) +if (XKB_VERSION VERSION_GREATER_EQUAL 1.5.0) + set(HAVE_XKBCOMMON_NO_SECURE_GETENV 1) +else() + set(HAVE_XKBCOMMON_NO_SECURE_GETENV 0) +endif() pkg_check_modules(XKBX11 IMPORTED_TARGET xkbcommon-x11 REQUIRED) add_feature_info(XKBX11 XKBX11_FOUND "Required for handling keyboard events in X11 backend") diff --git a/src/config-kwin.h.cmake b/src/config-kwin.h.cmake index da947c85dd..b5209c0e2a 100644 --- a/src/config-kwin.h.cmake +++ b/src/config-kwin.h.cmake @@ -19,6 +19,7 @@ #cmakedefine01 HAVE_BREEZE_DECO #cmakedefine01 HAVE_SCHED_RESET_ON_FORK #cmakedefine01 HAVE_ACCESSIBILITY +#cmakedefine01 HAVE_XKBCOMMON_NO_SECURE_GETENV #if HAVE_BREEZE_DECO #define BREEZE_KDECORATION_PLUGIN_ID "${BREEZE_KDECORATION_PLUGIN_ID}" #endif diff --git a/src/xkb.cpp b/src/xkb.cpp index ef6fd0f1b8..0dc89082ac 100644 --- a/src/xkb.cpp +++ b/src/xkb.cpp @@ -70,8 +70,14 @@ static void xkbLogHandler(xkb_context *context, xkb_log_level priority, const ch } } +#if HAVE_XKBCOMMON_NO_SECURE_GETENV +constexpr xkb_context_flags KWIN_XKB_CONTEXT_FLAGS = XKB_CONTEXT_NO_SECURE_GETENV; +#else +constexpr xkb_context_flags KWIN_XKB_CONTEXT_FLAGS = XKB_CONTEXT_NO_FLAGS; +#endif + Xkb::Xkb(bool followLocale1) - : m_context(xkb_context_new(XKB_CONTEXT_NO_FLAGS)) + : m_context(xkb_context_new(KWIN_XKB_CONTEXT_FLAGS)) , m_keymap(nullptr) , m_state(nullptr) , m_shiftModifier(0)