O Firefox 147 finalmente passa a seguir o padrão XDG Base Directory. Esse padrão define onde aplicativos devem guardar dados, configurações, cache e outros arquivos dentro da pasta do usuário no Linux.
Até agora, o browser colocava tudo em ~/.mozilla, mas com a mudança ele passa a usar os locais corretos, alinhando seu funcionamento ao de outros programas do sistema.
Diretórios mais importantes devem ser lidos primeiro, e caso um arquivo exista em vários locais, o que estiver no diretório prioritário deve prevalecer. Aplicativos podem criar versões específicas de dados e configurações para cada usuário seguindo esses caminhos.
Se uma pasta não existir no momento de gravar algo, o aplicativo deve tentar criá-la com permissão restrita ao usuário. Se não conseguir, pode avisar o usuário. Na leitura, se um arquivo não puder ser acessado em algum diretório, ele é simplesmente ignorado.
Por exemplo: o diretório $XDG_RUNTIME_DIR tem regras especiais: precisa ser exclusivo do usuário, com permissões rígidas, existir apenas enquanto o usuário estiver logado e estar em um sistema de arquivos local que permita recursos como sockets, links e notificações de mudança. Os arquivos nele não devem sobreviver a reinicializações ou logouts completos.
O padrão XDG organiza melhor os arquivos pessoais ao definir variáveis de ambiente que apontam para os diretórios adequados. Dados ficam em $XDG_DATA_HOME, configurações em $XDG_CONFIG_HOME, informações de estado em $XDG_STATE_HOME, arquivos executáveis pessoais em ~/.local/bin, dados adicionais em $XDG_DATA_DIRS etc.
Quando essas variáveis não estão definidas, o sistema usa caminhos padrão como ~/.local/share, ~/.config, ~/.local/state, ~/.cache, /usr/share e /etc/xdg, e todos os caminhos precisam ser absolutos para serem válidos.