在哪里存储应用程序的用户设置?


12

如果我希望我的应用程序存储一些设置,这些设置在应用程序关闭时仍然存在,那么我应该将它们存储在哪里?

我说的不是什么复杂的东西:两个布尔值和一个字符串(尽管将来我可能想存储更复杂的设置)

我听说过gconf,dconf,gsettings等。什么是“首选”方法?最好是在Python中简单易用的代码。


Answers:


9

gconf已弃用,因此对于新项目,我不会使用它。dconf是用于存储设置的后端,作为应用程序开发人员,您通常不必理会它。

您似乎需要的是gsettings一个高级API(用于C的API文档),用于存储/检索设置,而无需理会它们的实际存储方式/位置。gsettings是的一部分gio,后者是gnome的核心软件包之一(如glibgobject)。这篇博客文章简要介绍了如何在Python中使用它。

如果您不想要任何依赖项gio(例如,您不在开发GNOME应用程序中),并且想存储简单的配置文件,则建议您使用$HOME/.config目录(或由定义的任何目录$XDG_CONFIG_DIRS)代替$HOME/.your_appname,以符合freedesktop规范


您到博客文章的链接似乎已消失。您还有机会吗?
赛斯2015年

@Seth不幸的是,我链接到的博客文章似乎不再可用。我用另一个博客文章的链接替换了该链接,这也是一个不错的起点。
Marcel Stimberg

10

应用程序在系统范围内运行

存储设置的合适位置是:

/etc/[application]/

子目录是可选的。


应用程序按每个用户模式运行

设置应存储在用户HOME中,最好存储在隐藏目录中:

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

另请参阅Debian FHS


X-Desktop中运行的应用程序

X桌面的应用程序(例如GNOME,KDE,Unity,Xfce)应参考XDG基本目录规范,其中在本地变量中定义了以下文件位置:

  • $XDG_DATA_HOME定义相对于应该存储用户特定数据文件的基本目录。如果$ XDG_DATA_HOME未设置或为空,则应使用等于$ HOME / .local / share的默认值。

  • $XDG_CONFIG_HOME定义应该相对于其存储用户特定配置文件的基本目录。如果$ XDG_CONFIG_HOME未设置或为空,则应使用等于$ HOME / .config的默认值。

  • $XDG_DATA_DIRS定义除$ XDG_DATA_HOME基本目录外,还按优先级排序的基本目录集,以搜索数据文件。$ XDG_DATA_DIRS中的目录应以冒号':'分隔。

  • If $XDG_DATA_DIRS 如果未设置或为空,则应使用等于/ usr / local / share /:/ usr / share /的值。

  • $XDG_CONFIG_DIRS除了$ XDG_CONFIG_HOME基本目录之外,还定义了按优先级排序的基本目录集,以搜索配置文件。$ XDG_CONFIG_DIRS中的目录应以冒号':'分隔。如果$ XDG_CONFIG_DIRS未设置或为空,则应使用等于/ etc / xdg的值。


不,它们应该位于/home/<user>/.config/application/中
匿名

@Anonymous:为此提供参考会很酷。当前的Debian策略要求FHS 2.3,建议应用程序将用户设置存储在用户HOME的点文件(或目录)中。
塔卡特2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.