mime apps specification

Vladimir Kudrya vladimir-csp at yandex.ru
Tue Apr 15 13:06:49 PDT 2014

On 15.04.2014 23:13, David Faure wrote:
> When looking for the default app, we'll get app2, from the very first file in
> the list.
> When looking for the full list of associated apps:
> (the step numbers correspond to the items in the algorithm in the spec) (*)
> step 1: result = (), blacklist = ()
> step 2: opening $XDG_CONFIG_HOME desktop-specific list, no Added or Removed
> group, skipping. Then opening $XDG_CONFIG_HOME list.
> step 3: result = (app2)
> step 4: blacklist = (app4)
> step 5 and 6: no desktop files here, skipping
> Then moving up one dir, to $XDG_DATA_HOME applications:
> step 3,4: no mimeapps.list found, nothing to do
> step 5: result = (app2, app5)
> step 6: blacklist = (app4, app5)
> Then moving up one dir, to $XDG_CONFIG_DIRS list:
> step 3: none
> step 4: blacklist = (app4, app5, app2)
> step 5 and 6: no desktop files here, skipping
> Then moving up one dir, to $XDG_DATA_HOME applications, nothing to do
> Then moving up one dir, to $XDG_DATA_DIRS (has both mimeapps.list and apps)
> step 3: nothing (do not append app4 to result since it's in the blacklist)
> step 4: none
> step 5: add app1 and app3 (not app2, it's in the blacklist)
>     => result = (app2, app5, app1, app3)
>> Is the result app2.desktop;app3.desktop;app1.desktop;app5.desktop?
> No. I think you missed the fact that we go up the dirs in order, and process
> both (or either, whatever is available) mimeapps.list and .desktop files.
> So app5 gets added before we go up to more global dirs.

While I was writing this message, you've already answered most of the 
questions in another, so I'm sending the following only as a side notes. 
I'll put updated thoughts in reply to your message the neighboring branch...

OK, at least the set is the same, different order...

Why app5 got into blacklist in $XDG_DATA_HOME step 6?

Thank you, now I have more understanding of the algorithm. But maybe I'm 
missing some basic thing here which prevents me from understanding the 
choice of direction. My point of view comes from perceiving the whole 
override thing as the result of actions consecutively applied to some 
inital set. In this case, initial set is $XDG_DATA_DIRS .desktop files. 
And actions - all that goes on the way from that to the user-level.
That view just looks natural and simplier to me, but it does not look 
natural to you. Have you any idea why? Because i'm really curious. Maybe 
some rule i'm [blindly] ignoring, or you [blindly] following?

By the way, the result "app2, app5, app1, app3" can also be achieved by 
going global>local while making additions to the beginning of the list.

More information about the xdg mailing list