Signed-off-by: Mihail Konev <k....@ya.ru> --- Whichever directories get added, they should not differ from libxkbcommon not to "break per-user installs" between setxkbmap and users of the latter :)
setxkbmap.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/setxkbmap.c b/setxkbmap.c index cf0f02d6e704..42b8c3f04137 100644 --- a/setxkbmap.c +++ b/setxkbmap.c @@ -381,6 +381,40 @@ setOptString(int *arg, int argc, char **argv, setting_t *setting, enum source sr /***====================================================================***/ /** + * Retrieve name of ~/.config/xkb directory. + */ +char * +get_xdg_dir() +{ + static char path[PATH_MAX]; + + const char *home = getenv("HOME"); + const char *xdg = getenv("XDG_CONFIG_HOME"); + int rc; + + if (xdg != NULL) + snprintf(path, sizeof path, "%s/xkb", xdg); + else + snprintf(path, sizeof path, "%s/.config/xkb", home); + return path; +} +/** + * Retrieve name of ~/.xkb directory. + */ +char * +get_dot_dir() +{ + static char path[PATH_MAX]; + + const char *home = getenv("HOME"); + snprintf(path, sizeof path, "%s/.config/xkb", home); + return path; +} + + +/***====================================================================***/ + +/** * Parse commandline arguments. * Return True on success or False if an unrecognized option has been * specified. @@ -394,6 +428,8 @@ parseArgs(int argc, char **argv) ok = True; addToList(&inclPath, "."); + addToList(&inclPath, get_xdg_dir()); + addToList(&inclPath, get_dot_dir()); addToList(&inclPath, DFLT_XKB_CONFIG_ROOT); for (i = 1; (i < argc) && ok; i++) { -- 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