dconf不了解模式,因此对默认值视而不见

dconf不了解模式,因此对默认值视而不见

我试图了解 Gconf、Dconf 和 Gsettings 如何工作以及它们之间的关系。

我所知道的是:

  • 格康夫- 基于 XML 的数据库(后端系统)。较旧的版本。
  • 目录- 基于 BLOB 的数据库(后端系统)。较新的版本。
  • 管理设置- 用于编辑设置的 CLI 工具。看起来它只适用于 Dconf(尽管我在某处看到它可能适用于 Gconf)。

我知道 Gconf 有一个 GUI - Gconf-editor,而 Dconf 有一个 - Dconf-editor。

所以:

  1. 哪个后端系统更常用——Dconf 还是 Gconf?
  2. Gsettings 可以与它​​们两者配合使用吗?为什么它不显示所有 Dconf 架构?
  3. Dconf 将其数据保存在哪里?

答案1

目录是专为存储配置而设计的数据存储。它是格康夫,用于同样的目的。最终,不再有任何程序需要依赖 Gconf。

管理设置是一个用于读取和写入配置存储后端的开发库。在 Linux 上,它使用 Dconf,但在 Windows 上,它使用注册表,在 OS X 上,它使用本机数据存储。(gsettingsCLI 上的命令使用此库。)

建议应用程序开发人员和最终用户使用 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声称它读取默认值,但实际上对我没有任何作用?

相关内容