我试图了解 Gconf、Dconf 和 Gsettings 的工作原理以及它们之间的关系。
我所知道的是:
我知道对于 Gconf 有一个 GUI - Gconf-editor,对于 Dconf - Dconf-editor。
所以:
我已经阅读了很多关于新的 Ubuntu 配置工具的讨论:gconf 被 dconf 取代。
为什么要进行这种更改?为什么会有如此多的争论?创建一个gconf2dconf迁移工具是不是太难了?
是否有等效于 GSettings/dconf 的 gconf-editor?
我知道我可以gsettings set ...
在命令行上使用,但这有点不方便(尤其是对于列表类型)。
Dconf 还很年轻,但我的数据库已经乱七八糟,有很多“无模式”键。有没有办法做一些清理,或者我需要从头开始(通过删除 ~/.config/dconf/user 我猜)?
这基本上是一个“学术”问题——试图更好地理解配置系统的内部结构。
我知道dconf系统是gnome3中的新配置系统,它取代了(已弃用的)gconf;这一点从Gconf、Dconf、Gsettings 以及它们之间的关系就很清楚了。
在我看来,程序gsettings
和dconf-editor
where 只是两种不同的方式来访问同一个dconf数据库,这在什么是 dconf,它的功能是什么,我如何使用它中得到了证实
?
编辑:我发现有人注意到它在某些架构名称中的大小写有所不同,请参见此处 --- dconf 架构名称是否区分大小写?; 但似乎差异不仅限于此。在一个答案中有一个不匹配的例子,但我没有找到原因的解释。
但是最近我发现从gsettings
和访问的密钥dconf-editor
不一样。例如,对于设置vino
在dconf-editor
下org.gnome.desktop.remote-access
(见下面的截图),而在gsettings它们是下 org.gnome.Vino
。有一些文档可以解释差异吗?
在gsettings 中:
(0)samsung-romano:~/tmp/try% gsettings list-recursively org.gnome.Vino
org.gnome.Vino alternative-port uint16 5900
org.gnome.Vino authentication-methods ['none']
org.gnome.Vino disable-background false
[...]
Run Code Online (Sandbox Code Playgroud)
和:
(0)samsung-romano:~/tmp/try% gsettings list-recursively org.gnome.desktop.remote-access
No such schema 'org.gnome.desktop.remote-access'
Run Code Online (Sandbox Code Playgroud)
但是在dconf-editor 中:
gconf 和 dconf 编辑器都可用。考虑到 dconf 的变化,我们应该仍然使用 gconf 吗?运行 11.10 时,gconf 中的更改实际上有什么作用吗?
我已经安装了 dconf-tools。在这种情况下,我正在操纵会话指示器面板中名称的显示。
我可以在 dconf-editor gui 中毫无问题地更改它,我转到应用程序/指示器会话,然后取消勾选显示真实姓名面板。
但是,我也尝试在命令行中使用 dconf 来切换它:
dconf write /com/canonical/indicator/session/show-real-name-on-panel false
Run Code Online (Sandbox Code Playgroud)
重启后面板没有变化,dconf-editor里面的key也没有变化。
此外,尝试通过终端更新 dconf 数据库会产生错误:
$ dconf update
fatal: Error opening directory '/etc/dconf/db': No such file or directory
Run Code Online (Sandbox Code Playgroud)
根据我的经验,似乎dconf 和 dconf-editor 没有关系,所以我只是想知道我做错了什么。
如果我能弄清楚这一点,我只想将命令放在 bash 脚本中,以便下次我必须为升级进行全新安装时运行*。我在 6 个月内做了很多调整,我只想从现在开始尽可能地自动化。
我加载了dconf-editor
。没有菜单,但我确实发现您可以按下Ctrl+F
并输入搜索词。
但是,我不知道Ctrl+F
实际搜索的是什么。当我输入一个术语(例如panel
或unity-greeter
)时,我没有收到任何结果。
我也尝试gsettings
过命令行,但我尝试过的任何选项都没有运气;我一定是做错了。
如何在 dconf 中搜索特定键或值?
我有两台机器,都安装了最新的 Ubuntu Gnome 14.04,并且都安装了最新的 CrossOver Linux(1) 来运行 MS Office 2007。我知道,这是一个专有程序,但问题更普遍,也会影响 Wine。请不要停止阅读。
两台机器的西班牙语键盘大部分时间都运行良好(有时会显示一个已知的错误,但我认为这无关紧要)。问题是,在其中一个上,有一组程序在 Crossover Wine 下运行,该程序受到一个错误的影响,该错误使死键无法在某些程序上运行,尤其是 MS Office Word(另一个问题还有另一个错误,但似乎是同样的问题)。
在语言支持中禁用 IBus -> 更改键盘输入法和取消设置在XMODIFIERS
一台机器上有效,但在另一台机器上无效(!)。
所以一定是一些奇怪的设置造成了差异......
是否可以将所有 gsetting/dconf/whatever configuration database(2) 转储到可读文件中,以便我可以检查与diff -u
?
我知道
gsettings list-recursively org.freedesktop.ibus.general
Run Code Online (Sandbox Code Playgroud)
有效,但我很困惑
gsettings list-recursively org.freedesktop
Run Code Online (Sandbox Code Playgroud)
给出错误
No such schema 'org.freedesktop'
Run Code Online (Sandbox Code Playgroud)
...所以似乎我无法一次性转储所有注册表。任何提示?
脚注:
(1) 这是一个添加了技术支持和修复的 Wine 版本,可以更好地运行某些程序。许多改进都渗透在免费的 Wine 上,所以我认为这是 Ubuntu 生态系统的一个很好的部分;不过我没有添加链接,以免被指责宣传;-)
(2) 我们可以称之为它的真正含义吗——像臭名昭著的 Windows注册表一样?