本文参考自:
http://askubuntu.com/questions/72070/how-do-i-change-dconf-keys-without-a-gui-for-a-post-install-script
http://askubuntu.com/questions/45535/how-do-i-clean-up-my-dconf-database
新装的archlinux,又因为误操作导致了一个问题:
安装了一个gnome-shell的拓展---rss-feed.结果在操作的时候,可能是因为这个拓展的缘故或者其它缘故.总之gnome-shell卡死重启了.然后这个插件就出错了.卸了从新装也不行.很是郁闷.无奈对于archlinux又不是很熟.就各种搜集资料.最后终于通过多方的借鉴总结,找到了问题的解决办法.
为什么是多方借鉴总结呢,有一句话说得好,最可怕的事情不是你不会,而是你不知道.我的这个问题也是类似的情况.
最初仅以错误本身去搜索问题.结果一事无成.后来换了一个搜索的方式,搜索gnome插件出错,结果有文章提到dconf和gconf.然后跟着这个线索继续搜索.总算找到了最后的结果.
首先介绍一下dconf文件吧.
dconf文件是一个key-value的小型数据库.
dconf文件位于用户目录的.config/dconf/目录下面.有个叫user的文件,这个就是dconf和dconf-tool读取的源(当然dconf这么多内容,可能这只是其中的一部分,不过我并没有找到其它的内容).dconf属于gnome用来替代gconf的一个新的文件.功能也更强大.
接下来介绍gnome桌面的拓展文件的位置,在用户目录的.local/share/gnome-shell/extensions/目录下.这个目录下的拓展都是用户级别的,还有一个目录在usr/share/gnome-shell/extensions目录,这个是全局级别的.
最后再简单的对gsettings dconf dconf-editor做一个简单的介绍.
gsettings :
这个命令目前已经被dconf替换了(wiki).不过还是有一定用处了.
list-schemas : 列出已安装的信息的分类表
list-keys : 列出指定表中的key
set : 给某个分类下面的key指定一个value
通过这几个命令可以对已经安装的应用进行简单的控制.具体的使用方法可以使用gsettings list-recursively把所有的schema key 打印出来.然后找到自己要修改的内容进行修改.
对于我的这个问题,这种方式并不适合.因为打出来的内容里面并没有我想要的.
dconf :
这个文件更加赤裸裸.直接修改dconf的数据库.
dump : 因为数据库是加密的,所以需要进行解密,这个命令就负责解密.
load : 加载一个明文的文件并生成加密文件
update : 更新数据库文件至全局.
list : 列出dconf数据库的第一层目录
举例 : dconf list / #注意这个命令的/,并不是我们理解的根目录,而是/home/[user]/.config/dconf这个目录.
我的问题就是通过这个命令解决的.
dconf-tool :
这个命令就是dconf的一个可视化工具.仅仅用来看的,不支持修改.
下面说一下解决方法吧:
方法1 : 试着删除extension文件,然后重新装.结果识别,由此推测出还有信息保存在其它文件中.
方法2 : dconf dump / > user.bak
rm -rf user
alt + f2 然后 输入r后按enter.重启gnome-shell从新生成这个文件.
dconf load / < user.bak
dconf update /
方法2完美的解决了我的问题.不过有个问题需要明确的是,dconf指定的路径必须以/结尾.比如/com这样写就是错的.必须是/com/
关于dconf和gconf,其实我目前还是有些混沌的,不过通过排查问题,理解加深了很多.接下来还是得继续了解才是.