Como ler o valor da chave padrão com dconf ou gsettings?

13

Gostaria de saber o valor padrão de uma chave dconf / gsettings.

Minha pergunta é uma continuação da pergunta abaixo: Onde posso obter uma lista de SCHEMA / PATH / KEY para usar com gsettings?

O que estou tentando fazer é criar um script que leia todas as minhas preferências pessoais para que eu possa fazer backup e restaurá-las. Eu pretendo iterar por todas as chaves, como o script acima, ver quais chaves foram alteradas em relação ao valor padrão e fazer uma anotação delas, que podem ser restauradas posteriormente.

Vejo que o dconf-editor exibe o valor padrão das chaves, mas eu gostaria muito de escrever isso. Além disso, não vejo como a análise dos esquemas /usr/share/glib-2.0/schemas/ pode ser automatizada. Talvez alguém possa ajudar?

gsettings get-default | list-defaults seria bom =)

(Geesh, era muito mais fácil antigamente onde você mantinha seu ~ / .algorc na subversão ... = \


Com base na resposta fornecida abaixo, atualizei o script para imprimir esquema, chave, tipo de dados da chave, valor padrão e valor real:

#!/bin/bash

for schema in $(gsettings list-schemas | sort); do
    for key in $(gsettings list-keys $schema | sort); do
        type="$(gsettings range $schema $key | tr "\n" " ")"
        default="$(XDG_CONFIG_HOME=/tmp/ gsettings get $schema $key | tr "\n" " ")"
        value="$(gsettings get $schema $key | tr "\n" " ")"
        echo "$schema :: $key :: $type :: $default :: $value"
    done
done

Esta solução alternativa cobre basicamente o que eu preciso. Continuarei trabalhando no script de backup daqui.

Zta
fonte
Se alguém também chegou aqui procurando como redefinir uma chave para seu valor padrão, então gsettings reset KEYé o caminho a seguir.
Andreas Storvik Strauman

Respostas:

11

Não parece ser uma boa maneira de obter os valores padrão diretamente, mas como o cliente verifica XDG_CONFIG_HOME no ambiente, uma solução decente para obter valores de uma nova configuração pode ser:

XDG_CONFIG_HOME=/nonexistent gsettings get SCHEMA KEY
Jason Conti
fonte
1

Se você estiver interessado em fazer backup e restaurar suas configurações (nesse caso, altere o título da sua pergunta).

Cópia de segurança

Você pode fazer backup de suas configurações com

gsettings list-recursively > backup

Isso grava todas as chaves do backup de arquivo na sua pasta pessoal.

Restaurar

Até onde eu sei, não há nenhuma opção direta para importar o arquivo de volta para o dconf. Talvez você possa escrever uma rotina que leia o arquivo de backup linha por linha e execute gsettings set <input line from backup>para restaurar suas configurações.

demel
fonte