Existe documentação oficial sobre diretórios como ~/.config e ~/.cache?

Existe documentação oficial sobre diretórios como ~/.config e ~/.cache?

Já vi esses diretórios sendo usados ​​por muitos aplicativos e agora estou pensando em usá-los em meu aplicativo. Como posso saber se esta é uma pasta com suporte oficial e não apenas um local do mês para um cache/configuração por usuário?

Tenho procurado por algo oficial do Ubuntu, mas sem sucesso; talvez alguém conheça os termos de pesquisa adequados ou a localização desta documentação. Isso é algo que eu deveria aceitar como um local de prática padrão não declarado?

Responder1

Sim, existe um padrão: estes são especificados por freedesktop.org e fazem parte doEspecificações do diretório base XDG.

especificação de configuraçãodescreve apenas os requisitos básicos, mas os detalhes estão nas Especificações do Diretório Base. Os diretórios ~/.confige ~/.cachesão padrão, a menos que configurado de outra forma:

Há um conjunto de diretórios base ordenados por preferência em relação aos arquivos de configuração que devem ser pesquisados. Este conjunto de diretórios é definido pela variável de ambiente $XDG_CONFIG_DIRS.

Existe um único diretório base relativo ao qual os dados não essenciais (armazenados em cache) específicos do usuário devem ser gravados. Este diretório é definido pela variável de ambiente $XDG_CACHE_HOME.

...

$XDG_CONFIG_HOME define o diretório base relativo ao qual os arquivos de configuração específicos do usuário devem ser armazenados. Se $XDG_CONFIG_HOME não estiver definido ou vazio, um padrão igual a $HOME/.config deverá ser usado.

...

$XDG_CACHE_HOME define o diretório base relativo ao qual os arquivos de dados não essenciais específicos do usuário devem ser armazenados. Se $XDG_CACHE_HOME não estiver definido ou estiver vazio, um padrão igual a $HOME/.cache deve ser usado.

Você pode notar que essas especificações indicam principalmente onde os dados devem ser armazenados, quais variáveis ​​de ambiente usadas e de que maneira (neutro para desktop, eficiente, etc.), mas a maioria dos desktops é livre para implementar a parte "como" deles. Os desktops baseados em GNOME usarão gsettingsonde os usuários do KDE podem usar o mesmo viakwriteconfig, mas ambos dependerão do ~/.configdiretório no processo


Questione os pontos-chave

Como posso saber se esta é uma pasta com suporte oficial e não apenas um local do mês para um cache/configuração por usuário?

Esses diretórios aparecem na documentação oficial ePadrão de hierarquia do sistema de arquivostambém os menciona. Esta é a documentação oficial, portanto as pastas são oficialmente suportadas.

Isso é algo que eu deveria aceitar como um local de prática padrão não declarado?

Depende do aplicativo que você está criando. O aplicativo deve ser configurável por usuário ou funcionar de forma consistente em todo o sistema? A FHS nos diz que para assuntos de todo o sistema devemos usar /etcou/usr/local, mas os diretórios XDG devem ser usados ​​para configurações específicas do usuário - ~/.cachee ~/.config. Claro, se o aplicativo não depender de configurações específicas do usuário,/var/cachepode ser usado em vez do diretório por usuário. Claro, você sempre pode ter um único ~/.appname.confarquivo, um diretório ~/.appname.db ou ~/.appname/para manter as configurações e o cache lá, mas isso não seria padrão; não é "ruim" - apenas fora do padrão.

Veja também

informação relacionada