Search in $XDG_CONFIG_HOME/xkb, falling back to ~/.config/xkb Signed-off-by: Mihail Konev <k....@ya.ru> --- src/context.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/context.c b/src/context.c index 50993e108af6..e9e939b6b0eb 100644 --- a/src/context.c +++ b/src/context.c @@ -75,8 +75,8 @@ err: XKB_EXPORT int xkb_context_include_path_append_default(struct xkb_context *ctx) { - const char *home, *root; - char *user_path; + const char *home, *root, *xdg; + char *user_path, *xdg_path = NULL; int err; int ret = 0; @@ -86,9 +86,27 @@ xkb_context_include_path_append_default(struct xkb_context *ctx) else ret |= xkb_context_include_path_append(ctx, DFLT_XKB_CONFIG_ROOT); + xdg = secure_getenv("XDG_CONFIG_HOME"); + if (xdg != NULL) { + err = asprintf(&xdg_path, "%s/xkb", xdg); + if (err <= 0) + return ret; + ret |= xkb_context_include_path_append(ctx, xdg_path); + free(xdg_path); + } + home = secure_getenv("HOME"); if (!home) return ret; + + if (!xdg_path) { + err = asprintf(&xdg_path, "%s/.config/xkb", home); + if (err <= 0) + return ret; + ret |= xkb_context_include_path_append(ctx, xdg_path); + free(xdg_path); + } + err = asprintf(&user_path, "%s/.xkb", home); if (err <= 0) return ret; -- 2.9.2 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel