Skip to content

Repository files navigation

xdg/base-directory

codecov

PHP implementation of the XDG Base Directory Specification, with sensible default fallbacks for non-linux platforms.

Installation

composer require xdg/base-directory

Usage

useXdg\BaseDirectory\XdgBaseDirectory;
// we start by instantiating a platform:$platform = XdgBaseDirectory::fromEnvironment();
// get the XDG_CONFIG_HOME directory$configHome = $platform->getConfigHome();
// find the most user-specific existing configuration file:$configPath = $platform->findConfigPath('my-app/config.json', \file_exists(...));

See the PlatformInterface for all available platform methods.

Fallback values for Windows and macOS platforms

While on most Unix platforms, the XDG environment variables are usually defined, this is typically not the case on Windows and macOS.

This library choses to deviate from the spec and provide sensible defaults on those platforms.

Windows

On windows, when an XDG environment variable is not set, we first try to find a matching Known Folder:

XDG envKnown Folder(s)
HOMEProfile
XDG_CONFIG_HOMELocalAppData
XDG_DATA_HOMELocalAppData
XDG_STATE_HOMELocalAppData
XDG_CACHE_HOMELocalAppData/cache
XDG_RUNTIME_DIRLocalAppData
XDG_CONFIG_DIRSProgramData, RoamingAppData
XDG_DATA_DIRSRoamingAppData, ProgramData

If the known folder is not defined, we then try to fall back to a windows-specific environment variable, then fall back to a static default:

KnownFolderWindows envdefault
ProfileUSERPROFILE, HOMEDRIVE + HOMEPATH🚨 Error 🚨
LocalAppDataLOCALAPPDATA$HOME/AppData/Local
RoamingAppDataAPPDATA$HOME/AppData/Roaming
ProgramDataProgramData%SystemDrive%/ProgramData, C:/ProgramData

MacOS

XDG envFallback
XDG_CONFIG_HOME$HOME/Library/Application Support
XDG_DATA_HOME$HOME/Library/Application Support
XDG_STATE_HOME$HOME/Library/Application Support
XDG_CACHE_HOME$HOME/Library/caches
XDG_RUNTIME_DIR$HOME/Library/Application Support
XDG_CONFIG_DIRS$HOME/Library/Preferences, /Library/Application Support, /Library/Preferences
XDG_DATA_DIRS/Library/Application Support

About

PHP implementation of the XDG Base Directory Specification

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages