XDG Base Directory Conclusions [was Why .local/share ?]

Orion White orionwhite at gmx.com
Sat Nov 15 05:27:55 PST 2008


Brian J. Tarricone wrote:

> But that's fine!  The whole point of this thread is about possibly
> standardising on a few more $XDG_XYZ_DIR and $XDG_XYZ_HOME env vars, so
> it would be configurable to whatever you like.  And this could even
> solve your multi-arch problem; you could, for example, set:
> 
> XDG_LIB_HOME=$HOME/packages/lib/`uname -m`
> 
> if you wanted.  But I'd argue, for consistency with other XDG
> conventions ($XDG_DATA_HOME), and simplicity (most people won't need or
> care about per-arch binary dirs in their homedir), that the *default*
> should be $HOME/.local/lib.

I understand now that .local is a "local" representation of the 
traditional FHS hierarchy. So that, for instance, is the place to do 
private software installs. That addresses my original question about 
.local/share (I'm happy about that!). But it raises another: Why .config 
isn't .local/etc and .cache isn't .local/var/cache?

So am I looking at .config wrong? Is it not just for what we might 
normally put in the normal etc/, but other things too, like plugin 
binaries, templates, rc scripts, and so forth?

If so, then I don't much see the point in $XDG_DATA_HOME, why not 
replace it with $XDG_LOCAL_HOME --we all know the FHS standard 
subdirectories from there.

If not the case however, then it seems like were missing a couple 
directories. I'll go out on a limb and suggest what they are with the 
explinaiton that I do not think they need to fully reflect the FHS. 
There is some trends away form that standard, at least in so far as the 
desktop user is concerned, and for good reasons. So I would suggest:

   $XDG_EXEC_HOME   .exec
   $XDG_DATA_HOME   .data
   $XDG_TRASH_HOME  .trash
   $XDG_CACHE_HOME  .cache
   $XDG_CONFIG_HOME .config
   $XDG_LOCAL_HOME  .local

.exec is for personal programs and scripts. For example I use a special 
"ls" that list directories last. .trash is obvious, and I think this 
might already be an unspoken part of the convention (yes?). And .data, 
which we can think of as a unified personal share/, doc/, lib/, etc.

Concluding, the difference between .local/ and these others is akin to 
usr/local/ and usr/. But it's good they have variant names ('exec' 
instead of 'bin') to clearly distinguish them from the FHS structure.

T.


More information about the xdg mailing list