Onde armazenar as configurações do usuário para um aplicativo?


12

Se eu quiser que meu aplicativo armazene algumas configurações que persistem quando um aplicativo é fechado, onde devo armazená-las?

Não estou falando de nada complicado: dois booleanos e uma string (embora no futuro eu queira armazenar configurações mais complexas)

Eu ouvi gconf, dconf, gsettings, etc, todos mencionados. Qual é o método "preferido"? De preferência um que seja agradável e fácil em Python.


Respostas:


9

gconfestá obsoleta, portanto, para um novo projeto, eu não o usaria. dconfé um back-end para armazenar as configurações, como desenvolvedor de aplicativos você normalmente não precisa se preocupar com isso.

O que você parece precisar é de gsettingsuma API de alto nível ( documentação da API para C ) para armazenar / recuperar configurações sem incomodar como / onde elas estão realmente armazenadas. gsettingsfaz parte do gio, que é um dos principais pacotes do gnome (like glibe gobject). Esta postagem do blog fornece uma breve introdução sobre como usá-lo com o Python.

Se você não deseja nenhuma dependência gio(por exemplo, não está desenvolvendo um aplicativo GNOME) e deseja armazenar arquivos de configuração simples, sugiro usar o $HOME/.configdiretório (ou qualquer diretório definido por $XDG_CONFIG_DIRS) em vez de $HOME/.your_appname, de acordo com a especificação freedesktop .


Parece que seu link para a postagem do blog está morto. Alguma chance de você ter outro?
Seth

@ Infelizmente, o post no qual eu estava vinculando não parece mais estar disponível. Substituí o link por outro link de blog que também deve ser um bom ponto de partida.
Marcel Stimberg

10

Aplicativo executa todo o sistema

o local apropriado para armazenar as configurações seria:

/etc/[application]/

onde um subdiretório é opcional.


O aplicativo é executado no modo por usuário

As configurações devem ser armazenadas no HOME do usuário, de preferência em um diretório oculto:

/home/<user>/<.application>/

Veja também o Debian FHS .


Aplicativos em execução no X-Desktop

Os aplicativos para o X-Desktop (por exemplo, GNOME, KDE, Unity, Xfce) devem consultar a Especificação do diretório base do XDG onde os seguintes locais de arquivos são definidos nas variáveis ​​locais:

  • $XDG_DATA_HOMEdefine o diretório base em relação ao qual os arquivos de dados específicos do usuário devem ser armazenados. Se $ XDG_DATA_HOME não estiver definido ou vazio, um padrão igual a $ HOME / .local / share deverá ser usado.

  • $XDG_CONFIG_HOMEdefine 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_DATA_DIRSdefine o conjunto de diretórios base ordenados por preferência para procurar arquivos de dados, além do diretório base $ XDG_DATA_HOME. Os diretórios em $ XDG_DATA_DIRS devem ser separados por dois pontos ':'.

  • If $XDG_DATA_DIRS não está definido ou está vazio, um valor igual a / usr / local / share /: / usr / share / deve ser usado.

  • $XDG_CONFIG_DIRSdefine o conjunto de diretórios base ordenados por preferência para procurar arquivos de configuração, além do diretório base $ XDG_CONFIG_HOME. Os diretórios em $ XDG_CONFIG_DIRS devem ser separados por dois pontos ':'. Se $ XDG_CONFIG_DIRS não estiver definido ou vazio, um valor igual a / etc / xdg deve ser usado.


Não, eles devem estar em /home/<user>/.config/application/
Anônimo

@ Anonymous: Seria legal ter uma referência para isso. A política atual do Debian requer o FHS 2.3, com a exceção de que os aplicativos são recomendados para armazenar as configurações do usuário em um arquivo (ou diretório) de ponto na HOME do usuário.
Takkat 28/10/11

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.