User:Suzanne.soy/Data storage: RFC
- FreeCAD should honor the [ XDG https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
$XDG_CONFIG_HOME
for configuration files, i.e. most of.FreeCAD
$XDG_CACHE_HOME
for any data that can be deleted and regenerated offline, and caches of things which normally require network access at the moment when they are browsed, so most likely.FreeCAD/webdatacache/
and~/.FreeCAD/AddonManager/Images/
$XDG_DATA_HOME
for fonts, icons etc. which are usable by multiple applications. It is the equivalent of/usr/local/share
($XDG_DATA_HOME
is~/.local/share
by default)- There are some recommendations about other directories namely
…/lib/
(portable libraries)…/lib/<some-arch-id>
(arch-specific libraries) and…/bin/
(executable libraries) A few tools (1, 2) use the directories other thanshare
. $XDG_DATA_DIRS
defaults to/usr/local/share:/usr/share
- It is unclear what the difference between
share
andlib
is:- This page on tldp.org says that plug-ins live in
/usr/lib/
, - this page on tldp.org says that "The "share" word is used because what is under /usr/share is platform independent, and can be shared among several machines across a network filesystem",
- this page at freedesktop.org says that
~/.local/lib
is for "Static, private vendor data that is compatible with all architectures" and that~/.local/share
is for "Resources shared between multiple packages, such as fonts or artwork.".
- This page on tldp.org says that plug-ins live in
- The directories other than
share
are not customizable using env vars. - Macros and mods (currently in
~/.FreeCAD/Macro
and~/.FreeCAD/Mod
), when they are installed by the Addon manager, should be in$XDG_DATA_HOME/share
or in$XDG_DATA_HOME/lib
. - Which one to pick depends on whether we consider these "plug-ins" usable by other tools or whether they are private (which could likely be understood as "FreeCAD-specific"). Branded versions of FreeCAD can share installed macros and mods; and external applications could invoke FreeCAD macros directly (see e.g. how the XternalApps Workbench invokes Inkscape extensions from within FreeCAD, the reverse would also make sense). Also, since
~/.local/share
is not customizable, it seems less useful to move things there (maybe it is a recent
- There are some recommendations about other directories namely
$XDG_RUNTIME_DIR
$XDG_DATA_DIRS
https://wiki.debian.org/XDGBaseDirectorySpecification#state
/usr/share/freecad/mod
, ~/.local/share/freecad/freecad/freecad.qhc
$XDG_DOCUMENTS_DIR
as the default location when opening/saving files on a fresh installation (probably already the case, I didn't pay attention; the$PWD
is probably an okay choice especially when started from the command-line)