On Mon, 29 Apr 2019 18:05:12 -0000 Michael =?utf-8?B?S2rDtnJsaW5n?=
<michael(a)kjorling.se> wrote:
Michael Kj?rling writes:
On 28 Apr 2019 13:00 -0700, from bakul(a)bitblocks.com
(Bakul Shah):
IMHO separate files are fine but it would've
been nice to
a) have a place other than $HOME to store these files and
XDG already does that. At least Norman already mentioned ~/.config in
this thread.
https://www.freedesktop.org/wiki/Software/xdg-user-dirs/
Not sure how common that is on non-Linux systems, but it seems pretty
common on modern Linux distributions.
I meant to suggest that a unix wide convention, with an API to
access config data from programs, may still be of some use.
This should contain user specific configuration in a few lines.
mh for example has a single per user config file: .mh_profile.
It allows you to specify your local maildir's path (defaulting
to ~/Mail). All mail messages and additional state/data is then
stored under ~/Mail or its subdirectories.
So something like "path: foo" can be used store application
specific stuff that doesn't fit in the minimal config model.
The goal would be to cover the majority of programs and
provide some guidelines for more complex applications.
My workstation Debian system has a staggering 3467
files in that
directory, spread around 444 directories (75 directories directly
under ~/.config). Plus another 142 dot-directories and 66 dotfiles in
~/. Now, ~/.config typically uses multiple files per application, and
at a glance there's some stuff there that could definitely go, but I
still shudder to think of having all of those directly under ~/, so
it's clearly doing _some_ good in that regard.
I suspect most of these files contain some state and cached
application data or content as opposed to configuration. Try
the following from your home dir:
du -a .??*|cat -n|grep -v / |\
awk 'BEGIN{x=1;} {print $1-x, $3; x=$1;}'|sort -nr|head
This prints out top 10 of total files/dirs under each
top-level dot directory. You can try similar from .config. For
me, most in the top 10 are programs I haven't used in years!
And that's to not even begin to talk about all the stuff you'll find
in /etc on a modern Linux system.
b) a standardized plain text format
I'm not sure about that; different applications have very different
needs, and trying to shoehorn one into another would be ugly; quite
possibly even more ugly than just having different formats.
Not shoehorn in everything but support a core set.
trying to write mail sorting recipies (think procmail)
in a file with
the same format as that of one holding word processor settings or an
image metadata store.
By "one place" I meant something like a ~/etc or ~/rc or
~/config directory but not a single file. A separate config
file for each program (and library) that needs it.
Ideally I'd separate config, state, content and cache. I find
<program>/{config,state,<content>,cache} to be more modular
than {config,state,<content>,cache}/<program> -- what Apple
forces on Macs. Ex: ~/Library/Preferences/org.tug.TexWorks.plist