XDG Base Directory Specifications

Posted on May 12, 2023 - 2 min read

Folders such as .config and .cache should only contain configuration and cache files, respectively for programs on a machine. The problem is, many programs do not adhere to these rules. There are four main default XDG base directories that all programs on Unix-based systems should adhere to.

export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"

To call out some programs that do not adhere to these specifications: Firefox, Thunderbird, any chrome based application, VS Code, etc. The list goes on and on, but to make a point; So many of the most used applications on Unix-based systems do not follow these rules and they cause unnecessary home directory clutter.

Reference: https://wiki.archlinux.org/title/XDG_Base_Directory

Update 03.04.2026

Wow. Basically all the new things don’t care about this. All the new cli ai apps etc.