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 ~/.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 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 gsettings
onde os usuários do KDE podem usar o mesmo viakwriteconfig
, mas ambos dependerão do ~/.config
diretó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 /etc
ou/usr/local
, mas os diretórios XDG devem ser usados para configurações específicas do usuário - ~/.cache
e ~/.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.conf
arquivo, 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.