Firefox 挂起,因为缺少 sort-directories-first 设置

ntd*_*ntd 7 gnome xubuntu firefox gsettings

我最近从 xubuntu 14.04 升级到 xubuntu 16.04。过程完成但并不顺利(我不记得为什么)。

现在,firefox当我打开一个文件(File -> Open File)时,进程崩溃并出现以下错误:

... GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'sort-directories-first'
Run Code Online (Sandbox Code Playgroud)

我在网上搜索并没有找到任何相关的内容。重新安装firefox,gsettings-desktop-schemasgsettings-ubuntu-schemas(with apt-get install --reinstall ...) 没有改变任何东西。我也尝试重建架构,但错误总是一样的:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
Run Code Online (Sandbox Code Playgroud)

(并非如此)有趣的是,密钥存在!

grep sort-directories-first /usr/share/glib-2.0/schemas/*
Binary file /usr/share/glib-2.0/schemas/gschemas.compiled matches
/usr/share/glib-2.0/schemas/org.gnome.nautilus.gschema.xml:    <key type="b" name="sort-directories-first">
/usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml:    <key type="b" name="sort-directories-first">
Run Code Online (Sandbox Code Playgroud)

最后,我尝试手动创建密钥。随着gsettings它抱怨密钥不存在:

gsettings set org.gtk.Settings.FileChooser sort-directories-first false
Not such key 'sort-directories-first'
Run Code Online (Sandbox Code Playgroud)

随着dconf我可以创建一个键,但没有改变:

dconf write /org/gtk/settings/file-chooser/sort-directories-first false 
Run Code Online (Sandbox Code Playgroud)

moo*_*765 4

该文件/usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml存在并包含所需的密钥sort-directories-first

从WinEunuuchs2Unix的回答中我们知道,系统将根据环境变量的值在某个位置查找文件XDG_DATA_DIRS

那么当系统org.gtk.Settings.FileChooser.gschema.xml在不同的位置查找时会发生什么?

错误消息并没有告诉我们系统找不到该文件,该消息告诉我们系统无法在文件中找到密钥。这让我确信您的系统中某处有第二个文件org.gtk.Settings.FileChooser.gschema.xml,并且该文件不包含所需的密钥。

作为一种解决方法,我建议您搜索名称为 的文件org.gtk.Settings.FileChooser.gschema.xml,我相信您会找到多个文件。检查不同位置的该文件的内容,如果它包含所需的密钥,则不会。

复制自

/usr/share/glib-2.0/schema/org.gtk.Settings.FileChooser.gschema.xml

XDG_DATA_DIRS您可以在终端中检查with的值echo $XDG_DATA_DIRS,这可能会告诉您在哪里搜索文件。

我无法找到如何设置 的值XDG_DATA_DIRS,该值将在启动期间由 bash 脚本设置,但我发现的信息似乎已过时。

您的问题可能与此错误有关,Google 在网上搜索有关您的问题时将我引导至此链接。

  • 确实抓得很好。我前段时间编译了一个自定义 GLib 库,该库安装了 `/usr/local/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml` 架构。卸载该库解决了该问题。事实上,在我的“XDG_DATA_DIRS”上,“/usr/local/share”位于“/usr/share”之前。 (2认同)