Gconf,Dconf,Gsettings及其之间的关系


65

我试图了解Gconf,Dconf和Gsettings的工作原理以及它们之间的关系。

我所知道的是:

  • Gconf-基于XML的数据库(后端系统)。比较老的一个。
  • Dconf-基于BLOB的数据库(后端系统)。较新的。
  • Gsettings-用于编辑设置的CLI工具。看起来它仅适用于Dconf(尽管我在某处看到它可能适用于Gconf)。

我知道,对于Gconf,有一个GUI-Gconf编辑器,对于Dconf-有Dconf编辑器。

所以:

  1. 哪个后端系统更常用-Dconf或Gconf?
  2. Gsettings与他们两个都可以吗?而且为什么它不显示所有Dconf模式?
  3. Dconf在哪里保存其数据?

我对哪个工具(dconf或gsettings)处理哪些设置以及为什么会有差异特别感兴趣。
2015年

Answers:


38

GConf已过时。它是较旧的GNOME 2.x配置API和系统,在新版本中已被DConf / GSettings取代。但是,某些应用程序仍在使用它。

GSettings是DConf的GLib实现,它将其数据存储在二进制数据库中。

gsettings命令行工具是简单地通过GSettings API来访问或修改设置,以同样的方式,旧的工具gconftool命令行工具是GConf信息。


1
GSettings也可以与GConf一起使用吗?
idgar

3
不,GSettings是DConf规范的实现。命令行工具不适用于gconf。但是,Ubuntu上当前使用了一些兼容性层,在其中更改gsettings或gconf中的设置将导致更改传播到另一个。但是,这并不常见,也不是要依靠的东西。
dobey 2013年

另一件事,我看到某个地方GSettings可使用配置文件。有什么事吗?为什么GSettings不显示与DConf编辑器相同的模式?
idgar

1
有趣的是,哪些设置由哪个工具管理?使用dconf或dconf-editor时存在的密钥与通过gsettings可访问的密钥不同,例如,可以通过dconf访问密钥/ com / canonical / unity / always-show-menus,但是没有等效的密钥可以通过gsettings访问在Ubuntu 15.04中。
Johsm 15:04

1
@dobey:谢谢您的帮助。我真正想要的是:在dconf中必须使用的密钥和在gsettings中必须使用的密钥之间的映射如何工作?如果我知道一个,是否有找到另一个算法的方法?在我的具体情况下,我得到了/ com / canonical / unity / always-show-menus-现在我如何找到适合gsettings的密钥?如果两者都使用相同的基础数据,是否应该没有逻辑映射?还是我还缺少什么?
2015年

43

Dconf是设计用于存储配置的数据存储。它是用于相同目的的Gconf的替代品。最终,没有程序可以再依赖Gconf了。

Gsettings是用于读取和写入配置存储后端的开发库。在Linux上,它使用Dconf,但在Windows上,它使用注册表,在OS X上,它使用本机数据存储。

建议应用程序开发人员和最终用户使用Gsettings,而不是直接使用Dconf。

也可以看看:

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.