On Thu, Sep 16, 2021 at 11:39:30AM -0400, Elsie Hupp wrote:
> > XDG_CONFIG_DIRS acts like PATH does: first match wins, which
> > I would not expect to happen with conffiles.
> 
> In general I believe the expectation is for the XDG variables with the
> plural suffix (i.e. ending in “S”) to return array values. String
> arrays in C are weird, but it’s possible that you have the option of
> checking each item in the array rather than just using the first one.

That is not a problem here. The software does the right thing. The
question is more like, if it should be querying XDG_CONFIG_DIRS at
runtime in the first place. I am more and more suspecting, that it
should not, or that there is little to no benefit in doing so and can
lead to unintended behaviour.

> https://docs.gtk.org/glib/func.get_system_config_dirs.html
> 
> So how to access subsequent array entries would probably depend on if or 
> whether you’re using one of GObject’s other language bindings.
> 
> Looking at Qt’s implementation, by comparison, they have these values that 
> look relevant:
> 
> > ConfigLocation      "~/.config", "/etc/xdg"
> > GenericConfigLocation       "~/.config", "/etc/xdg”
> > AppConfigLocation   "~/.config/<APPNAME>", "/etc/xdg/<APPNAME>"

Yes, XDG_CONFIG_HOME takes precedence, of course. Or what other point am
I missing?

> Basically if you have a preferred config directory (or an ordered list
> of preferred directories), you could check each directory on your own
> list against the directories returned by g_get_system_config_dirs(),
> or other define an algorithm creating an alternatively sorted array
> from the g_get_system_config_dirs() return values.

That seems a lot of hassle (at runtime, mind you) for questionable gain.

> It sounds like what you would want to do here is prefer any array
> value outside the user’s home directory and only use an array value
> inside the user’s home directory as a fallback.

No, of course *not*, the user's config takes precedence, always. ;)

> > I think that's why: you cannot write inside such a container, so system-
> > wide configs cannot be changed. XDG_CONFIG_HOME has the problem, that
> > one cannot provide a default for everyone, which is the purpose of a
> > system-wide config and it cannot be installed by make install, unless
> > each user installs the software to $HOME/.local. Now, that can't be
> > right. ;)
> 
> If you’re specifically trying to work within Flatpak, the Flathub Discourse 
> might also be a good place to ask:

No, I don't. I am asking a general question. Software installation is as
easy as:
        make && sudo make install

But it should not make things harder for people, who do want to package
it, like flatpak for instance.


Best,
Peter

Reply via email to