我试图了解 Gconf、Dconf 和 Gsettings 如何工作以及它们之间的关系。
我所知道的是:
- 格康夫- 基于 XML 的数据库(后端系统)。较旧的版本。
- 目录- 基于 BLOB 的数据库(后端系统)。较新的版本。
- 管理设置- 用于编辑设置的 CLI 工具。看起来它只适用于 Dconf(尽管我在某处看到它可能适用于 Gconf)。
我知道 Gconf 有一个 GUI - Gconf-editor,而 Dconf 有一个 - Dconf-editor。
所以:
- 哪个后端系统更常用——Dconf 还是 Gconf?
- Gsettings 可以与它们两者配合使用吗?为什么它不显示所有 Dconf 架构?
- Dconf 将其数据保存在哪里?
答案1
目录是专为存储配置而设计的数据存储。它是格康夫,用于同样的目的。最终,不再有任何程序需要依赖 Gconf。
管理设置是一个用于读取和写入配置存储后端的开发库。在 Linux 上,它使用 Dconf,但在 Windows 上,它使用注册表,在 OS X 上,它使用本机数据存储。(gsettings
CLI 上的命令使用此库。)
建议应用程序开发人员和最终用户使用 Gsettings,而不是直接使用 Dconf。
也可以看看:
答案2
GConf 已过时。它是较旧的 GNOME 2.x 配置 API 和系统,在较新的版本中已被 DConf/GSettings 取代。但是,一些应用程序仍在使用它。
GSettings 是 DConf 的 GLib 实现,它将其数据存储在二进制数据库中。
命令行工具gsettings
只是一个通过 GSettings API 访问或修改设置的工具,就像旧的gconftool
命令行工具用于 GConf 一样。
答案3
这里忽略 GConf,因为它已经过时了。TLDR:使用gsettings
。
dconf
不了解模式,因此对默认值视而不见
来自man dconf
(1):
dconf 程序可以对 dconf 数据库执行各种操作,例如读取或写入单个值或整个目录。此工具直接对 dconf 进行操作,而不使用 gsettings 架构信息。因此,它无法对值执行类型和一致性检查。如果需要进行此类检查,可以使用 gsettings(1) 实用程序。
我不太关心“类型和一致性检查”。
实际上,我看到了一个更重要的区别——dconf
只能看到我明确设置的设置。未更改的设置示例:
> gsettings list-recursively org.gnome.desktop.interface | grep scaling
org.gnome.desktop.interface text-scaling-factor 1.0
org.gnome.desktop.interface scaling-factor uint32 0
> gsettings list-schemas --print-paths | grep org.gnome.desktop.interface
org.gnome.desktop.interface /org/gnome/desktop/interface/
> dconf dump /org/gnome/desktop/interface/ | grep scaling
> dconf list /org/gnome/desktop/interface/ | grep scaling
> dconf read /org/gnome/desktop/interface/text-scaling-factor
> dconf read -d /org/gnome/desktop/interface/text-scaling-factor
>
这里dconf read -d
声称它读取默认值,但实际上对我没有任何作用?