aboutsummaryrefslogtreecommitdiffstats
path: root/conf.c
diff options
context:
space:
mode:
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/conf.c b/conf.c
index 0d0a852..9919597 100644
--- a/conf.c
+++ b/conf.c
@@ -271,6 +271,7 @@ void
conf_init(struct conf *c)
{
const char *home;
+ const char *xdg_config;
struct passwd *pw;
unsigned int i;
@@ -305,15 +306,20 @@ conf_init(struct conf *c)
c->font = xstrdup("sans-serif:pixelsize=14:bold");
c->wmname = xstrdup("CWM");
- home = getenv("HOME");
- if ((home == NULL) || (*home == '\0')) {
- pw = getpwuid(getuid());
- if (pw != NULL && pw->pw_dir != NULL && *pw->pw_dir != '\0')
- home = pw->pw_dir;
- else
- home = "/";
+ xdg_config = getenv("XDG_CONFIG_HOME");
+ if ((xdg_config == NULL) || (*xdg_config == '\0')) {
+ home = getenv("HOME");
+ if ((home == NULL) || (*home == '\0')) {
+ pw = getpwuid(getuid());
+ if (pw != NULL && pw->pw_dir != NULL && *pw->pw_dir != '\0')
+ home = pw->pw_dir;
+ else
+ home = "/";
+ }
+ xasprintf(&c->conf_file, "%s/.config/cwm/cwmrc", home);
+ } else {
+ xasprintf(&c->conf_file, "%s/cwm/cwmrc", xdg_config);
}
- xasprintf(&c->conf_file, "%s/%s", home, ".cwmrc");
}
void