Firefox hangs because sort-directories-first setting missing

Solution 1:

The file /usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml exists and contains the desired key sort-directories-first.

We know from the answer by WinEunuuchs2Unix that the system will look for the file in a location depending on the value of XDG_DATA_DIRS environment variable.

So what happen when the system looks for org.gtk.Settings.FileChooser.gschema.xml in a different location ?

The error-message doesn't tell us that the system can't find the file, the message tells us that the system can't find the key in the file. That makes me sure that you have a second file named org.gtk.Settings.FileChooser.gschema.xml somewhere in your system and this file doesn't contain the desired key.

As a workaround I would suggest that you search for files with the name org.gtk.Settings.FileChooser.gschema.xml, I am sure you will find more than only one. Check the content of that file in the different location if it contains the desired key, it will not.

Copy over from

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

You may check the value of XDG_DATA_DIRS with echo $XDG_DATA_DIRS in terminal, that may give you a clue where to search for files.

I couldn't find out how to set the value for XDG_DATA_DIRS, the value will be set during start-up by a bash-script, but information I found seemed to be outdated.

Your issue might be related with this bug, Google leads me to this link while searching the net about your issue.

Solution 2:

Just a little background:

glib-compile-schemas compiles all the GSettings XML schema files in DIRECTORY into a binary file with the name gschemas.compiled that can be used by GSettings. The XML schema files must have the filename extension .gschema.xml. For a detailed description of the XML file format, see the GSettings documentation.

At runtime, GSettings looks for schemas in the glib-2.0/schemas subdirectories of all directories specified in the XDG_DATA_DIRS environment variable. The usual location to install schema files is /usr/share/glib-2.0/schemas.

In addition to schema files, glib-compile-schemas reads 'vendor override' files, which are key files that can override default values for keys in the schemas. The group names in the key files are the schema id, and the values are written in serialized GVariant form. Vendor override files must have the filename extension .gschema.override.

By convention, vendor override files begin with nn_ where nn is a number from 00 to 99. Higher numbered files have higher priority (eg: if the same override is made in a file numbered 10 and then again in a file numbered 20, the override from 20 will take precedence).

If I'm reading your setup correctly you have your .xml files in:

/usr/share/glib/schemas

and not in:

/usr/share/glib-2.0/schemas

where they are expected to be.

If I read it wrong please let me know and I'll delete this answer. I don't use FireFox so could not test the answer like I usually to do.