Sim, existe um padrão: eles são especificados no freedesktop.org e fazem parte das Especificações do diretório base do XDG .
O config-spec descreve apenas os requisitos básicos, mas os detalhes estão nas Especificações do Diretório Base. Os diretórios ~/.config
e ~/.cache
sã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 quais arquivos de configuração devem ser pesquisados. Este conjunto de diretórios é definido pela variável de ambiente $ XDG_CONFIG_DIRS.
Há um diretório base único em relação ao qual dados não essenciais (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 em relação 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 deve ser usado.
...
$ XDG_CACHE_HOME define o diretório base em relação ao qual arquivos de dados não essenciais específicos do usuário devem ser armazenados. Se $ XDG_CACHE_HOME não estiver definido ou vazio, um padrão igual a $ HOME / .cache deve ser usado.
Você pode observar que essas especificações afirmam principalmente onde os dados devem ser armazenados, quais variáveis de ambiente são usadas e de que maneira (neutro em relação à área de trabalho, eficiente etc.), mas a maioria das áreas de trabalho é livre na implementação da parte "como". As áreas de trabalho baseadas no GNOME usarão gsettings
onde os usuários do KDE podem usar o mesmo via kwriteconfig
, mas ambos confiarão no ~/.config
diretório no processo
Pontos-chave da pergunta
Como sei que essa é 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 e o Filesystem Hierarchy Standard também os menciona. Esta é a documentação oficial, portanto, as pastas são oficialmente suportadas.
Isso é algo que devo 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? O FHS nos diz que, para todo o sistema, devemos usar /etc
or /usr/local
, mas os diretórios XDG devem ser usados para configurações específicas do usuário - ~/.cache
e ~/.config
. Obviamente, se o aplicativo não depender de configurações específicas do usuário, / var / cache poderá ser usado em vez do diretório por usuário. Obviamente, você sempre pode ter um único ~/.appname.conf
arquivo, um diretório ~/.appname.db
ou ~/.appname/
para manter as configurações e o cache, mas isso não seria padrão; não é "ruim" - apenas fora do padrão.
Veja também