archlinux修改dconf配置文件


新装的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,其实我目前还是有些混沌的,不过通过排查问题,理解加深了很多.接下来还是得继续了解才是.

相关内容