On a tangent: it bugs me that the default XDG directory structure doesn't fully match the standard Linux directory structure. What's with these inconsistent defaults?<p><pre><code> XDG_DATA_HOME="$HOME/.local/share" # okay, reasonable
XDG_CONFIG_HOME="$HOME/.config" # ...uh, pardon?
XDG_STATE_HOME="$HOME/.local/state" # well at least it's in ~/.local
XDG_CACHE_HOME="$HOME/.cache" # ...but this one ain't; what in tarnation?
</code></pre>
It'd make more sense to be consistent with how system-wide applications use /usr or /usr/local, like so:<p><pre><code> XDG_DATA_HOME="$HOME/.local/share"
XDG_CONFIG_HOME="$HOME/.local/etc"
XDG_STATE_HOME="$HOME/.local/var/lib"
XDG_CACHE_HOME="$HOME/.local/var/cache"
</code></pre>
This would make $XDG_(CONFIG|STATE|CACHE)_HOME consistent with $XDG_DATA_HOME, and also consistent with existing conventions around ~/.local/bin and ~/.local/lib.<p>The XDG spec ain't the only naughty naughty boy here, either. Flatpak puts all of its application data in ~/.var/app, whereas it'd make a lot more sense in ~/.local/var/lib/flatpak/app. And of course, the subject of Boxxy (and, as others mentioned, xdg-ninja) is the countless apps contributing further to the chaos.<p>Of course, all this would stop being an issue entirely if Linux would just embrace union mounts like Plan 9 did and overlay everything onto /bin, /lib, /share, /etc, and so on. Hell, if I were the not-so-benevolent dictator for life of the Linux ecosystem I'd take the opportunity to rename all those weird UNIX™ vestiges, too, like /etc→/conf and /var→/data - but if we're gonna hang on to those vestiges, the least XDG could do is encourage consistency with them.<p>Maybe I just need to make my own distro and finally say goodbye to what little remains of my sanity.