From 8a67da3011d0efe1ded96f4ef66085fa90ccb4c6 Mon Sep 17 00:00:00 2001 From: Wynn Wolf Arbor Date: Wed, 18 Mar 2020 19:48:18 +0100 Subject: Migrate to an XDG-compliant config file location --- conf.c | 22 ++++++++++++++-------- cwm.1 | 9 ++++++--- cwmrc.5 | 7 +++++-- 3 files changed, 25 insertions(+), 13 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 diff --git a/cwm.1 b/cwm.1 index 74dbd36..49c90a3 100644 --- a/cwm.1 +++ b/cwm.1 @@ -39,7 +39,7 @@ Specify an alternative configuration file. By default, .Nm loads -.Pa ~/.cwmrc , +.Pa $XDG_CONFIG_HOME/cwm/cwmrc , if present. Any error messages from lines in the configuration file will be sent to .Em stderr ; @@ -244,12 +244,15 @@ starts on this display unless the option is given. .El .Sh FILES -.Bl -tag -width "~/.cwmrcXX" -compact -.It Pa ~/.cwmrc +.Bl -tag -width "$XDG_CONFIG_HOME/cwm/cwmrcXXX" -compact +.It Pa $XDG_CONFIG_HOME/cwm/cwmrc Default .Nm configuration file. .El +.Pp +If $XDG_CONFIG_HOME is unset or empty, it will default to +.Em ~/.config .Sh SEE ALSO .Xr cwmrc 5 .Sh HISTORY diff --git a/cwmrc.5 b/cwmrc.5 index 10ae69f..9d79905 100644 --- a/cwmrc.5 +++ b/cwmrc.5 @@ -431,12 +431,15 @@ Move pointer 10 times pixels left. .El .Sh FILES -.Bl -tag -width "~/.cwmrcXXX" -compact -.It Pa ~/.cwmrc +.Bl -tag -width "$XDG_CONFIG_HOME/cwm/cwmrcXXX" -compact +.It Pa $XDG_CONFIG_HOME/cwm/cwmrc Default .Xr cwm 1 configuration file. .El +.Pp +If $XDG_CONFIG_HOME is unset or empty, it will default to +.Em ~/.config .Sh EXAMPLES .Bd -literal # Set default Xft(3) font -- cgit v1.2.3-2-gb3c3