[TUHS] A question about ls(1)

Bakul Shah bakul at bitblocks.com
Tue Apr 30 08:32:19 AEST 2019

On Mon, 29 Apr 2019 18:05:12 -0000 Michael =?utf-8?B?S2rDtnJsaW5n?= <michael at kjorling.se> wrote:
Michael Kj?rling writes:
> On 28 Apr 2019 13:00 -0700, from bakul at 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

More information about the TUHS mailing list