[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

XDG Standard is not evil (was: Re: Why focus on systemd?)



2014/11/16 Peter Nieman wrote:
> Has anyone ever wondered where all these funny directories like ~/.cache,
> ~/.config, ~/.local or even ~/Desktop (with a capital D) came from that
> appeared in Debian after upgrading to - was it Lenny? Here's an answer:
> http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

People often misunderstand what XDG standards were created for.

Imagine that you're writing some graphical application in those old days
before XDG standards appeared. And you want to put a link to it to the main
menu of your DE/WM. Where would you put it? ~/.gnome2/vfolders/applications?
~/.kde/share/applnk? Maybe .icewm/menu? Or all of them? What if you want
to autostart it on login? ~/.kde/Autostart? ~/.kde/share/autostart?
~/.gnome2/autostart?

The problem arises when MULTIPLE INDEPENDENT apps need SAME files.
So they came together and created XDG standard. It looks like:
  [autostart-spec]
  system-wide autostart files are placed in $XDG_CONFIG_DIRS/autostart/
  user-specific overrides go to $XDG_CONFIG_HOME/autostart/
  "based on the desktop base directory specification".
  [menu-spec]
  .menu files are placed in $XDG_CONFIG_DIRS/menus/
  .desktop files are placed in $XDG_DATA_DIRS/applications/
  user overrides go to $XDG_DATA_HOME/applications/ and $XDG_CONFIG_HOME/menus
  "according to the desktop base directory specification".
and so on.

The "Base Directory Specification" itself is just html page to reference,
a base for other XDG specifications, that's why it's called "base".
As its original author said [1]:
> XDG Base Directory spec is intended for use by other specification.
> For example the XDG Menu specification and Autostart specification
> refer to the XDG Base Directory specification instead of reinventing
> their own filesystem locations / hierarchy.
It just gives the meaning to directories, used by *other XDG standards*,
which brought peace and clarity to the mess of desktop environments.

Those XDG standards were created by "X Desktop Group" only to define
unified directories for COMMON files of multiple X desktop environments,
not for some rogue applications to hide their own private files.
Each of files placed in those directories is extensively documented
by other XDG standards.

Later some people started to abuse those directories and put there files,
that never supposed to be there. Those people don't really think about
standards or unification. Usually they just enable displaying hidden files
in their file manager, see a lot of dotfiles in a home directory and think
that "this is wrong". They start searching how to "fix" this, find xdg
basedir-spec, and use it as an excuse for moving ~/.appname files, to
~/.config/appname, or worse, split them among .config, .local, .cache...
They don't think about /etc/xdg, they don't read FHS or other XDG standards,
they don't care about people who have to do 2-4 times more work to find and
migrate settings of selected application to another machine, they just
don't want to see dotfiles.

But don't blame XDG standard for that, blame people abusing it
to reduce the number of dotfiles in their home directory.

[1] https://lists.launchpad.net/unity-design/msg02114.html
-- 
  Serge


Reply to: