Je suis récemment passé de xubuntu 14.04 à xubuntu 16.04. Le processus s'est terminé mais ne s'est pas déroulé sans heurts (je ne me souviens plus pourquoi).
Maintenant, dans firefox
lorsque j'ouvre un fichier (Fichier -> Ouvrir un fichier), le processus se bloque avec l'erreur suivante:
... GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'sort-directories-first'
J'ai cherché sur le Web et je n'ai rien trouvé de pertinent. Réinstaller firefox
, gsettings-desktop-schemas
et gsettings-ubuntu-schemas
(avec apt-get install --reinstall ...
) n'a rien changé. J'ai aussi essayé de reconstruire les schémas mais l'erreur est toujours la même:
Sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
Le plus drôle, c’est que la clé existe!
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">
À la fin, j'ai essayé de créer manuellement la clé. Avec gsettings
on se plaint que la clé n'existe pas:
gsettings set org.gtk.Settings.FileChooser sort-directories-first false
Not such key 'sort-directories-first'
Avec dconf
je peux créer cette clé mais rien ne change:
dconf write /org/gtk/settings/file-chooser/sort-directories-first false
Le fichier /usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml
existe et contient la clé souhaitée sort-directories-first
.
La réponse de WinEunuuchs2Unix indique que le système recherchera le fichier à un emplacement dépendant de la valeur de la variable d’environnement XDG_DATA_DIRS
.
Alors que se passe-t-il lorsque le système recherche org.gtk.Settings.FileChooser.gschema.xml
dans un emplacement différent?
Le message d'erreur ne nous dit pas que le système ne peut pas trouver le fichier, le message nous dit que le système ne peut pas trouver la clé dans le fichier. Cela me garantit que vous avez un deuxième fichier nommé org.gtk.Settings.FileChooser.gschema.xml
quelque part dans votre système et que ce fichier ne contient pas la clé souhaitée.
Comme solution de contournement, je vous suggère de rechercher des fichiers portant le nom org.gtk.Settings.FileChooser.gschema.xml
, car vous en trouverez plusieurs. Vérifiez le contenu de ce fichier à l'emplacement différent s'il contient la clé souhaitée, ce ne sera pas le cas.
Copier à partir de
/usr/share/glib-2.0/schema/org.gtk.Settings.FileChooser.gschema.xml
Vous pouvez vérifier la valeur de XDG_DATA_DIRS
avec echo $XDG_DATA_DIRS
dans le terminal, ce qui peut vous donner une idée de l'endroit où rechercher des fichiers.
Je ne pouvais pas savoir comment définir la valeur pour XDG_DATA_DIRS
, elle sera définie lors du démarrage par un script bash, mais les informations que j'ai trouvées semblaient obsolètes.
Votre problème peut être lié à this bug, Google me conduit à ce lien lorsque vous effectuez une recherche sur le net à propos de votre problème.
Juste un peu de fond:
glib-compile-schemas compile tous les fichiers de schéma XML GSettings dans DIRECTORY
en un fichier binaire nommé gschemas.compiled
pouvant être utilisé par GSettings. Les fichiers de schéma XML doivent avoir l'extension de nom de fichier .gschema.xml
. Pour une description détaillée du format de fichier XML, voir la documentation de GSettings.
Au moment de l'exécution, GSettings recherche les schémas dans les sous-répertoires glib-2.0/schemas
de tous les répertoires spécifiés dans la variable d'environnement XDG_DATA_DIRS
. L'emplacement habituel d'installation des fichiers de schéma est /usr/share/glib-2.0/schemas
.
En plus des fichiers de schéma, glib-compile-schemas lit les fichiers 'remplacement du fournisseur', qui sont des fichiers de clés pouvant remplacer les valeurs par défaut des clés des schémas. Les noms de groupe dans les fichiers de clés sont l'identifiant du schéma et les valeurs sont écrites sous forme GVariant sérialisée. Les fichiers de substitution de fournisseur doivent avoir l'extension de nom de fichier .gschema.override
.
Par convention, les fichiers de substitution du fournisseur commencent par nn_
où nn
est un nombre compris entre 00 et 99. Les fichiers numérotés supérieurs ont une priorité plus élevée (par exemple, si le même remplacement est effectué dans un fichier numéroté 10, puis à nouveau). dans un fichier numéroté 20, le remplacement de 20 sera prioritaire).
Si je lis correctement votre configuration, vous avez vos fichiers .xml
dans:
/usr/share/glib/schemas
et pas dans:
/usr/share/glib-2.0/schemas
où ils sont censés être.
Si je le lis mal, veuillez me le faire savoir et je supprimerai cette réponse. Je n'utilise pas FireFox, donc je ne pouvais pas tester la réponse comme je le fais habituellement.