Many of the free and open source software projects that focus on desktop technology collaborate on shared specifications and software within the freedesktop.org project.
One of these shared specifications is the base directory specification which defines a set of locations in the filesystem that can be used for portable desktop technology implementations.
KDE supports the base directory specification and the various environment variables it prescribes in addition to the KDE filesystem hierarchy. A summary of KDE's implementation follows below, while the full specification can be read here on freedesktop.org.
Data that applications store which are specific to a given user are to be stored in the XDG_DATA_HOME directory. If the XDG_DATA_HOME environment variable isn't set, it defaults to $HOME/.local/share for local storage and /usr/local/share;/usr/share for system-wide files.
Some items that may be stored in XDG_DATA_HOME are files the user has put in the trash, mimetype definitions and associations, and application .desktop files.
The search path for system-wide directories can be defined by setting the XDG_DATA_DIRS environment variable to contain a list of paths.
Configuration information should be stored in the XDG_CONFIG_HOME directory. If the XDG_CONFIG_HOME environment variable isn't set, it defaults to $HOME/.config for local storage and /etc/xdg for system-wide files.
Some items that may be stored in XDG_CONFIG_HOME are application configuration files and application menu structure.
The search path for system-wide directories can be defined setting the XDG_CONFIG_DIRS environment variable to contain a list of paths.
Temporary data caches can be stored in the XDG_CACHE_HOME location, which defaults to $HOME/.cache. There is no system-wide cache location, as such caches are always user-specific.
Thumbnails representing the contents of files for use in icons and other representations of files are to be stored in $HOME/.thumbnails. The structure and content of the thumbnails directory is defined in the thumbnail specification.
(Why aren't thumbnails stored in $HOME/.cache/thumbnails?)