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

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



On Thursday, November 27, 2014 8:00:05 AM UTC+5:30, Serge wrote:
> 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

I have a question along these lines:

Years ago when we used computers, many people used one machine --
centrally administered.

Nowadays one person uses many machines
1. Simply multiple hardware
2. Multiple OSes on the same h/w
3. Other more fancy (cloud) usage

Just staying with 2. for now and that too only Linux, its a good
idea to map the One-me <--> Many OSes to 
One /home <--> Many 'slashes' (eg Debian on sda5, Debian 32 on 
sda7 ubuntu on sda6 etc)

However there are some issues: if the software-versions in these 
dont match up then its precisely these XDG files that tread on 
each others' 
toes across OSes.

One solution that Ive been toying with is as follows:
1. Have one real My-home partition
2. Keep /home as part of the OS-file system, so that
each OS can mess around with its own 'XDG's'

I wonder if people have tried this (or something similar) and
any downsides


Reply to: