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

10

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

Minha pergunta é um acompanhamento 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 o backup delas e restaurá-las. Eu planejo iterar todas as chaves, como o script acima, ver quais chaves foram alteradas a partir do valor padrão e anotá-las, que podem ser restauradas posteriormente.

Eu vejo que o dconf-editor exibe o valor padrão das teclas, mas eu gostaria muito de fazer o script disso. Além disso, não vejo como analisar os esquemas /usr/share/glib-2.0/schemas/ pode ser automatizado. Talvez alguém possa ajudar?

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

(Geesh, foi muito mais fácil nos velhos tempos em que você apenas mantinha o seu ~ / .somethingrc no subversion ... = \

Com base na resposta dada 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. Eu continuarei trabalhando no script de backup daqui.

    
por Zta 05.10.2012 / 21:24

2 respostas

8

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

XDG_CONFIG_HOME=/nonexistent gsettings get SCHEMA KEY
    
por Jason Conti 05.10.2012 / 22:23
1

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

Backup

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

gsettings list-recursively > backup

Isso grava todas as chaves no arquivo backup 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.

    
por demel 18.10.2012 / 16:17