Por que alguns aplicativos usam ~ / .config / appname para seus dados de configuração, enquanto outros usam ~ / .appname?

37

Notei que alguns aplicativos colocam seus arquivos de configuração ~/.config/appnameenquanto outros usam ~/.appname(da maneira clássica, AFAIK) para isso. Qual é o sentido dessa distinção e o que poderia ser melhor considerar para uma aplicação minha?

ATUALIZAÇÃO: Parece que meu (XUbuntu 11.10 padrão) $ XDG_CONFIG_HOME está definido como ~/e a maioria dos aplicativos em meu sistema (como Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, etc.) está em conformidade com isso. Mas ainda existem muitos aplicativos (como Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE etc.) que usam ~/.config/. Outra coisa suspeita é que os diretórios ~/.config/não estão ocultos (nenhum ponto em seus nomes) - não é esperado que os diretórios de configuração de aplicativos tenham nomes próprios constantes, sem depender da localização (valor $ XDG_CONFIG_HOME)?

Ivan
fonte

Respostas:

44

Um complemento à grande resposta de jasonwryan, abordando alguns de seus problemas:

  • Seu não$XDG_CONFIG_HOME está definido como . Simplesmente não está definido. Portanto, os aplicativos que seguem a Especificação XDG usam o padrão~/~/.config

  • Os diretórios internos /.confignão estão ocultos porque não precisam. O objetivo de usar um ~/.configdir é desorganizar o usuário $HOME. Como eles já estão em um diretório separado e oculto, não há necessidade de ficar oculto lá dentro.

  • O software que não segue as especificações (infelizmente ainda é a grande maioria) usa um diretório oculto para suas configurações (como ~/.myapp) como uma tentativa de não incomodar o usuário $HOME. Funciona (meio que), mas ainda é uma abordagem ruim quando, por exemplo, você tenta fazer backup de suas configurações e de seus "big data" (como fotos, vídeos, músicas) separadamente. Ter todas as configurações em um único local, sem misturar com os dados do usuário, é uma abordagem muito melhor

  • Quanto a "ter nomes constantes, independentemente de para onde XDG_CONFIG_HOMEaponta" , eles já fazem: está appname sem o ponto inicial. Lembre-se: os que usam $HOME/.appnamesão os que ignoram as especificações XDG. Eles usam um caminho codificado.

  • Quanto às suas aplicações, use o XDG Standard ! Eu imploro, e seus usuários agradecerão por você não sobrecarregar ainda mais o $ HOME.

MestreLion
fonte
4
Só quero dizer que a sua resposta é mais excelente! A sabedoria convencional é particularmente útil e seus pontos são muito bem explicados :) obrigado!
23816 Steve Benner
Onde está a diferença entre uma lista de arquivos ocultos no diretório HOME e uma lista de arquivos não ocultos em um diretório de configuração oculto? Para mim, é tão amplo quanto longo.
ceving 21/07
@ ceving: vejo duas diferenças principais, uma estética e uma prática: do seu $HOMEponto de vista, é uma ~/.configentrada única em vez de várias, talvez dezenas delas. E facilita muito os backups das suas configurações (ou exclui-as)! Como você pode diferenciar as configurações de software de, digamos, sua ~/Documentsou sua ~/.cache?
MestreLion 21/07
24

Como os aplicativos que colocam os arquivos de configuração $HOMEestão ignorando a Especificação do diretório base do XDG , principalmente:

Existe um diretório base único em relação ao qual os arquivos de configuração específicos do usuário devem ser gravados. Esse diretório é definido pela variável de ambiente $ XDG_CONFIG_HOME ...

Se $ XDG_CONFIG_HOME não estiver definido ou vazio, um padrão igual a $ HOME / .config deve ser usado.
jasonwryan
fonte
Looks como o meu (Xubuntu 11.10 padrão) $XDG_CONFIG_HOMEestá definido para ~/, mas ainda existem muitas aplicações que utilizam~/.config/
Ivan
3
Esta resposta está longe de ser completa. Ou seja, parece implicar que a especificação existe desde o primeiro dia, e são apenas os aplicativos que a ignoram desde o início. Mas, na verdade, existem alguns aplicativos que existem há muito mais tempo que o XDG com sua especificação.
Ruslan
Uma versão 0.7 Poettering standard. Isso deve ser realmente importante. Alguém pode explicar qual problema o padrão resolve?
ceving 21/07
@Ruslan: Está presente desde 2003. Faz 15 anos ! É verdade que esse não é o primeiro dia e muitos softwares foram criados antes disso. Mas qualquer um desses softwares provavelmente tinha muitas atualizações ainda em uso hoje, por isso é seguro dizer que as que não migraram para o padrão XDG deliberadamente escolheram ignorá-lo.
MestreLion 14/0318
@ceving: resolve o problema de organizar os diretórios do usuário da mesma maneira que /está organizado: não mistura dados com executáveis ​​com configuração. ~/.configé a contraparte do usuário /etce isso ajuda tremendamente em backups, por exemplo. Sem isso /.config, qualquer backup de configurações teria que incluir manualmente todos os diretórios de aplicativos ou excluir manualmente todos os diretórios de "big data" de todos os usuários (vídeos, músicas e outros diretórios pessoais que ele pudesse ter criado).
MestreLion
7

Uma resposta mais controversa é:

  • ~/.configé o padrão para o padrão XDG, que se aplica apenas a aplicativos que aderem aos padrões do FreeDesktop.org (também através do uso da $XDG_CONFIG_HOMEvariável).
  • ~/.appname existia antes do padrão freedesktop
  • Nem todo mundo gosta do padrão freedesktop
  • "Desordem" $HOMEnão é um problema, na minha opinião.
David Gardner
fonte
2
Essa não é uma resposta controversa, é enganosa e claramente errada: - Atualmente, tenho 120 diretórios em ~/.config, a partir de aplicativos que não têm relação com o FreeDesktop.org, como Libre Office, Chromium, Deluge, muitos jogos (incluindo mas não somente todos os jogos que usam Unity3D), aplicativos do Google (Chrome, Earth), itens Python (IPython, Eric), emuladores (Muppen 64, Desmune). O próprio FreeDesktop.org possui muito poucas aplicações. - ~/.appnameé uma convenção que existia antes do XDG, mas a maioria dos softwares ainda em uso hoje foi criada muito depois do padrão.
MestreLion
5
- Da perspectiva de um desenvolvedor de software, não há nada que gosta ou não em um padrão diretório, ele simplesmente muda seu save dir constante $HOME/.myapppara${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion
Ainda é um padrão do freedesktop, definido aqui: Specifications.freedesktop.org/basedir-spec/… e quais aplicativos são livres para não serem utilizados e não desejam. Nem todo mundo considera necessária a separação em .config.
David Gardner
É verdade, mas implicar que os aplicativos que seguem o padrão são de alguma forma "aplicativos FreeDesktop.org" é muito enganador.
MestreLion
2
existem benefícios a ~/.appmais ~/.config/app?
sam boosalis 02/04