O Firefox trava porque a primeira configuração de diretórios de classificação está ausente

6

Eu recentemente atualizei do xubuntu 14.04 para o xubuntu 16.04. O processo terminou, mas não foi tranquilo (não me lembro por quê).

Agora em firefox quando abro um arquivo ( Arquivo - > Abrir arquivo ) o processo falha com o seguinte erro:

... GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'sort-directories-first'

Pesquisei pela Web e não encontrei nada relevante. Reinstalar firefox , gsettings-desktop-schemas e gsettings-ubuntu-schemas (com apt-get install --reinstall ... ) não alterou nada. Eu também tentei reconstruir os esquemas, mas o erro é sempre o mesmo:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

A coisa (não tão) engraçada é que a chave 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">

No final, tentei criar manualmente a chave. Com gsettings reclama que a chave não existe:

gsettings set org.gtk.Settings.FileChooser sort-directories-first false
Not such key 'sort-directories-first'

Com dconf , posso criar essa chave, mas nada muda:

dconf write /org/gtk/settings/file-chooser/sort-directories-first false 
    
por ntd 04.09.2016 / 09:03

2 respostas

2

O arquivo /usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml existe e contém a chave desejada sort-directories-first .

Sabemos pela resposta de WinEunuuchs2Unix que o sistema irá procurar o arquivo em um local, dependendo do valor da variável de ambiente XDG_DATA_DIRS .

Então, o que acontece quando o sistema procura org.gtk.Settings.FileChooser.gschema.xml em um local diferente?

A mensagem de erro não nos diz que o sistema não pode encontrar o arquivo, a mensagem informa que o sistema não pode encontrar a chave no arquivo. Isso me faz ter certeza de que você tem um segundo arquivo chamado org.gtk.Settings.FileChooser.gschema.xml em algum lugar no seu sistema e esse arquivo não contém a chave desejada.

Como solução alternativa, sugiro que você pesquise arquivos com o nome org.gtk.Settings.FileChooser.gschema.xml , tenho certeza de que você encontrará mais do que apenas um. Verifique o conteúdo desse arquivo no local diferente, se ele contiver a chave desejada, isso não ocorrerá.

Copiar de

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

Você pode verificar o valor de XDG_DATA_DIRS com echo $XDG_DATA_DIRS no terminal, que pode lhe dar uma pista de onde procurar por arquivos.

Não consegui descobrir como definir o valor para XDG_DATA_DIRS , o valor será definido durante a inicialização por um script bash, mas as informações que encontrei parecem estar desatualizadas.

Seu problema pode estar relacionado com este bug, o Google leva me para este link enquanto pesquisava na net sobre o seu problema.

    
por mook765 11.09.2016 / 13:34
1

Apenas um pouco de fundo:

O glib-compile-schemas compila todos os arquivos do esquema XML GSettings em DIRECTORY em um arquivo binário com o nome gschemas.compiled que pode ser usado pelo GSettings. Os arquivos de esquema XML devem ter a extensão de nome de arquivo .gschema.xml . Para uma descrição detalhada do formato de arquivo XML, consulte a documentação do GSettings.

No tempo de execução, o GSettings procura por esquemas nos subdiretórios glib-2.0/schemas de todos os diretórios especificados na variável de ambiente XDG_DATA_DIRS . O local habitual para instalar arquivos de esquema é /usr/share/glib-2.0/schemas .

Além dos arquivos de esquema, o comando glib-compile-schemas lê arquivos 'vendor override', que são arquivos-chave que podem substituir os valores padrão das chaves nos esquemas. Os nomes de grupos nos arquivos de chaves são o id do esquema e os valores são gravados no formulário GVariant serializado. Os arquivos de substituição do fornecedor devem ter a extensão de nome de arquivo .gschema.override .

Por convenção, os arquivos de substituição do fornecedor começam com nn_ , em que nn é um número de 00 a 99. Arquivos numerados mais altos têm maior prioridade (por exemplo: se a mesma substituição for feita em um arquivo numerado 10 e novamente um arquivo numerado 20, a substituição de 20 terá precedência).

Se eu estiver lendo sua configuração corretamente, você terá seus arquivos .xml em:

/usr/share/glib/schemas

e não em:

/usr/share/glib-2.0/schemas

onde eles são esperados.

Se eu ler errado, por favor me avise e eu vou deletar essa resposta. Eu não uso o FireFox, então não pude testar a resposta como normalmente faço.

    
por WinEunuuchs2Unix 07.09.2016 / 03:02