![应用程序的用户设置存储在哪里?](https://linux22.com/image/1105394/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE%E5%AD%98%E5%82%A8%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F.png)
如果我希望我的应用程序存储一些设置,当应用程序关闭时这些设置仍然保留,那么我应该将它们存储在哪里?
我说的并不复杂:两个布尔值和一个字符串(尽管将来我可能想要存储更复杂的设置)
我听说过 gconf、dconf、gsettings 等。什么是“首选”方法?最好是在 Python 中简单易用的方法。
答案1
应用程序在整个系统范围内运行
存储设置的适当位置是:
/etc/[application]/
其中子目录是可选的。
应用程序运行在每个用户模式
设置应该存储在用户主目录中,最好是在隐藏目录中:
/home/<user>/<.application>/
另请参阅Debian FHS。
正在运行的应用程序X-桌面
X-Desktop 的应用程序(例如 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 的值。
答案2
gconf
已被弃用,因此对于新项目我不会使用它。dconf
是用于存储设置的后端,作为应用程序开发人员,您通常不必为此烦恼。
你似乎需要的是gsettings
,一个高级 API(C 的 API 文档) 来存储/检索设置,而不必担心它们实际存储的方式/位置。gsettings
是 的一部分gio
,它是 gnome 的核心软件包之一(如glib
和gobject
)。这博客文章简单介绍了如何与 Python 一起使用它。
如果你不想有任何依赖gio
(例如你没有开发 GNOME 应用程序)并且想要存储简单的配置文件,我建议使用目录$HOME/.config
(或由 定义的任何目录$XDG_CONFIG_DIRS
)而不是$HOME/.your_appname
,以符合freedesktop 规格。
答案3
迅速地,这是Ubuntu 应用程序开发,默认存储所有偏好设置桌面沙发. 优点是这些设置可以通过 Ubuntu One 工具与其他安装同步。