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

12

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

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

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

    
por 8128 03.09.2011 / 11:43

3 respostas

9

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

O que você parece precisar é de gsettings , uma API de alto nível ( documentação da API para C ) para armazenar / recuperar configurações sem se preocupar como / onde elas são realmente armazenadas. gsettings é parte de gio , que é um dos pacotes principais do gnome (como glib e gobject ). Esta postagem no blog oferece uma breve introdução sobre como usá-lo com o Python.

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

    
por Marcel Stimberg 03.09.2011 / 15:27
10

Aplicativo executado em todo o sistema

o local apropriado para armazenar configurações seria:

/etc/[application]/

onde um subdiretório é opcional.

O aplicativo é executado em um modo por usuário

As configurações de

devem ser armazenadas no usuário HOME, preferencialmente 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 se referir ao Especificação de Diretório Base XDG onde os seguintes locais de arquivo são definidos em variáveis locais:

  
  • $XDG_DATA_HOME define o diretório base relativo 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_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_DATA_DIRS define o conjunto de diretórios base ordenado por preferência para pesquisar 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 vazio, um valor igual a / usr / local / share /: / usr / share / deve ser usado.

  •   
  • $XDG_CONFIG_DIRS define o conjunto de diretórios base ordenado por preferência para pesquisar 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 deverá ser usado.

  •   
    
por Takkat 03.09.2011 / 12:36
1

Rapidamente , que é um dos mais recentes ajudantes de desenvolvimento de aplicações para o Ubuntu , o padrão é armazenar todas as preferências com desktopcouch . A vantagem é que essas configurações podem ser sincronizadas com outras instalações através das ferramentas do Ubuntu One.

    
por xubuntix 28.10.2011 / 11:56