Hi Jeremy,

On 28/02/2015, at 11:20 PM, Jeremy Whiting wrote:
> On Sat, Feb 28, 2015 at 4:51 AM, René J.V. <rjvber...@gmail.com> wrote:
> On Saturday February 28 2015 22:00:07 Ian Wadham wrote:
> > > We could change GenericDataDir in QStandardPaths to be:
> > >
> > >      "~/Library/Application Support/Qt5", "/Library/Application 
> > > Support/Qt5"
> > >
> > > That would work for ALL applications that use Qt5 and QSP, regardless of 
> > > origin,
> > > and would be a more "correct" usage of Apple OS X by the Qt 5 libraries.

> Then data will all be under ~/Library/Application Support/Qt5/appname ? 
> that's a bit cleaner,

Errrmm, not "all", unless there has been a change in KDE Community 
designs/policy…

App data would be INSTALLED under /Library/Application Support/Qt5/appname (no 
~)
and would be read-only.  The "~" version is used by apps when they *execute*, 
either
for the user of the app to override one of the read-only files (e.g. 
<appname>ui.rc) or to
save personal data for that app (e.g. statistics in the KPat game).

> but why would Qt/KDE applications need to use a namespace like that when 
> apple's own applications don't?

Ahem!  Why do American web addresses not have a country code?  It is a matter of
"first in, best dressed", as we say in Australia.

Anyway, as René says, it really is best to keep Open Source files quite 
separate from
Apple files, to avoid any possibility of cross-contamination, name duplication 
or even
actual deletion or overwriting.  That is why MacPorts uses /opt/local for 
utilities and
libraries, rather than /usr/local.

> Here I see ~/Library/Application Support/kf5 for all frameworks as it is, I 
> don't think any frameworks or applications are using GenericDataLocation 
> directly, they all use a subfolder of it, otherwise we would see application 
> data files in /usr/share on linux which isn't recommended either.

What I see is source-code of apps that have been ported to KF5, such as, in 
Granatier [1].

    49  m_soundExplode = new KgSound(QStandardPaths::locate
                                        (QStandardPaths::DataLocation, 
"sounds/explode.wav"));
 102                const QStringList dirs = QStandardPaths::locateAll
                                        (QStandardPaths::GenericDataLocation, 
"granatier/arenas",
                                         QStandardPaths::LocateDirectory);

This has been ported and tested on Linux and Linux CI (at least) and there it 
is (AFAIK)
using plain, unaltered QStandardPaths.  So there should be no kf5/ subfolder 
there,
unless it comes from $XDG_DATA_DIRS.

The first lines of code will find the explosion sound, either in 
/usr/local/share/granatier,
where it has been installed, OR in ~/.local/share/granatier, if the user has 
their own
explosion sound.  The *order* of paths in QSP ensures that the latter is picked 
up first,
if it exists.  It will not be found in /usr/share, because it has not been 
installed there.

The second bit of code finds all folders that contain Granatier "arenas" (board 
layouts
containing bombs, etc.).  These could be installed or provided by the user (or 
GHNS?).

Note that the code could have said '(QStandardPaths::DataLocation, "arenas", '. 
 So no
way for a "kf5" suffix to get in there.  Maybe it comes from $XDG_DATA_DIRS (?).

Also, there would be several shared data folders in GenericDataLocation, 
alongside
the DataLocation folders for the apps.  See [2] for details.  These would fit 
in quite well
with standard paths on Apple OS X set to:

     "~/Library/Application Support/<subdir>", "/Library/Application 
Support/<subdir>"

always supposing we really *want* to be good Apple citizens.  They would not 
look at
all good if they were directly under "Application Support/", because they are 
not apps.

Cheers, Ian W.

[1] 
https://projects.kde.org/projects/kde/kdegames/granatier/repository/revisions/master/entry/src/game.cpp
[2] http://api.kde.org/ecm/kde-module/KDEInstallDirs.html

Reply via email to