In the New World Order, Linux apps should all store their user-specific
data according to the FreeDesktop Base Directory specification,
which in practice means that config details for myapp end up in
$HOME/.config/myapp
. All well and good. However, I don’t like having
configuration stored in dotfiles; I like to be able to get at it more
easily, so I want it in $HOME/Settings
. The XDG spec provides for
this: you set an environment variable XDG_CONFIG_HOME
(which defaults
to $HOME/.config
) and then everything uses it. Great! But…where do I
set this variable so that all the apps get it? Some suggestions:
$HOME/.bashrc
,$HOME/.bash_profile
,$HOME/.profile
— as far as I can tell, these aren’t run as part of the login process, so they’re no good. They get run when you start bash, which means when you first fire up a terminal.$HOME/.gnomerc
— gets run by gdm. Might be a Debianism, and doesn’t work if I change away from gdm a few months from now$HOME/.xinitrc
,$HOME/.xsession
— get run if you’re in X but not if you’re running over SSH, and.xsession
is a Debianism/etc/xdg/user-dirs.conf
— this will change it for all users on the machine, not just me- Something in PAM. Perhaps. It’s not clear what, though.
- A file of my choice, which I then source from all of the above places. This is doable but seems stupid to me, and I’m bound to miss something.
- Something else. This is where you come in; where am I meant to set the environment so that everything gets access to it?
Answers on a postcard…