[KDE/Mac] Thoughts on standard directories in Qt5 - QStandardPaths

David Faure faure at kde.org
Sat Jan 3 11:00:50 UTC 2015

On Thursday 01 January 2015 15:00:40 René J.V. Bertin wrote:
> On Thursday January 01 2015 14:41:37 David Faure wrote:
> >But if /opt/local is such a common prefix on Mac, maybe we can extend
> >qstandardpaths on mac to know about it...
> It's a common prefix for those who use MacPorts . That doesn't mean that the
> majority of Qt(5) users and developers have MacPorts installed ...
> >So, how about something like the patch below? Can you test it? Should we
> >also honour $XDG_DATA_DIRS and $XDG_CONFIG_DIRS, in case someone sets up
> >MacPorts with a different prefix than /opt/local?
> >
> >http://www.davidfaure.fr/2014/qstandardpaths_mac.mm.diff
> For starters I wouldn't out-comment the reference  to XDG_CONFIG_DIRS but
> apart from that, how would this work out for users who have a Qt5 installed
> through MacPorts (so presumably have stuff in ${prefix}/etc/xdg) 

It's not Qt that puts stuff into ${prefix}/share and ${prefix}/etc/xdg,
it's the apps.

> but also
> versions installed elsewhere ... like embedded in app bundles? Example:
> both VirtualBox and Parallels Desktop are built atop Qt (v4 right now but
> that will change sometime soon I presume). What happens with such an
> application when it is started in presence of a Qt5 MacPorts installation?

I don't see the problem. Either they install stuff into 
${prefix}/share/VirtualBox and they'll be happy that this patch finds it,
or they don't install stuff there and nothing will happen.

> I presume that you envision to override the standard QStandardPaths with
> the information from ${prefix}/etc/xdg when that path exists. 

It's just one more lookup path.

> That'd work
> for the MacPorts install, but I'm not even sure if that'd be desirable for
> pure Qt5 applications installed through MacPorts ... 

I don't understand the distinction here.

> let alone for those other applications should the patch be mainstreamed!

If these apps don't install stuff in ${prefix}/share, they won't be affected.

The point is that there's almost always a subdir of share with the name of the 
app or lib, to avoid conflicts. So a non-MacPorts app who expects to find 
stuff in /Library/MyApp (or whatever the correct path is) will still do that, 
since there won't be a ${prefix}/share/MyApp (so having that added to the 
lookup path will have no effect).

And a MacPorts app, if I understand correctly, does not expect to find stuff 
in /Library but rather in ${prefix}/share, and for that it needs my patch.

Ian wrote:
> Perhaps there could be some way for an XDG-based program, from KDE or
> otherwise, to tell QStandardPaths to setXDGModeEnabled(bool xdgMode).

Well, my initial suggestion was to add support for XDG_* env vars to QSP, we 
could do that *without* a default value of /opt/local (unlike my current 
patch), so that nothing happens unless these vars are set. It would do exactly 
that - not affect non-MacPorts apps. This would indeed be "less intrusive".
But you guys said bad things about environment variables so I was trying to 
look for other ideas :-)

David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5

More information about the kde-mac mailing list