Amethyst
Amethyst copied to clipboard
Support XDG Base Directory Specification for `amethyst.yml`
First of all, thanks for providing a configuration file, I really appreciate to be able to check in my configuration in a source control system.
Background
Lately the XDG Base Directory Specification has been gaining quite a steady popularity, even though it's been around for a long time already. The basic idea is to standardize where programs put their files e.g. all config files in a certain directory. The benefits for end users are many, including:
- No polluted $HOME/
- Can easily grep for only config files in
$XDG_CONFIG_HOME - Can decide where to store configurations in more complex setups (multi system setup e.g.)
- Easily wipe state by removing
$XDG_STATE_HOMEor even$XDG_DATA_HOME, but without destroying and configuration files.
The first point is maybe what most end users enjoy the most though.
How
Specifically for this project, this should mean that the search for the configuration file should be done like:
- If
$XDG_CONFIG_HOMEis set, look for$XDG_CONFIG_HOME/amethyst/amethyst.yml - elseIf
$XDG_CONFIG_HOMEis unset, use the default value for the envvar which is$HOME/.config. Thus, the config file to look for is at$HOME/.config/amethyst/amethyst.yml - else fall-back to current legacy
$HOME/.amethyst.yml
The first two steps to can be codifed in bash like:
${XDG_CONFIG_HOME:-$HOME/.config}/amethyst/amethyst.yml
Seems super reasonable. Would be a good starter contribution.
Yes I’m definitely voting for XDG based directory for the config file(s). When you have pretty much everything organized this way, my OCD freaks out when my home directory starts to get messy.