¿Cómo leer el valor de clave predeterminado con dconf o gsettings?

13

Me gustaría saber el valor predeterminado de una clave dconf / gsettings.

Mi pregunta es un seguimiento de la siguiente pregunta: ¿Dónde puedo obtener una lista de ESQUEMA / RUTA / CLAVE para usar con gsettings?

Lo que estoy tratando de hacer es crear un script que lea todas mis preferencias personales para que pueda hacer una copia de seguridad y restaurarlas. Planeo repetir todas las claves, como el script anterior, ver qué claves se han cambiado de su valor predeterminado y tomar nota de ellas, que se pueden restaurar más adelante.

Veo que el dconf-editor muestra el valor predeterminado de las claves, pero me gustaría mucho escribir esto. Además, no veo cómo se puede automatizar el análisis de los esquemas /usr/share/glib-2.0/schemas/. Tal vez alguien puede ayudar?

gsettings get-default | list-defaults sería bueno =)

(Geesh, fue mucho más fácil en los viejos tiempos donde solo mantenías tu ~ / .somethingrc en subversion ... = \


Según la respuesta que se proporciona a continuación, he actualizado el script para imprimir el esquema, la clave, el tipo de datos de la clave, el valor predeterminado y el 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 solución básicamente cubre lo que necesito. Continuaré trabajando en el script de copia de seguridad desde aquí.

Zta
fuente
Si alguien más también llegó aquí buscando cómo restablecer una clave a su valor predeterminado, entonces ese gsettings reset KEYes el camino a seguir.
Andreas Storvik Strauman

Respuestas:

11

No parece haber una buena manera de obtener los valores predeterminados directamente, pero dado que el cliente verifica XDG_CONFIG_HOME en el entorno, una solución decente para obtener valores de una nueva configuración podría ser:

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

Si está interesado en hacer una copia de seguridad y restaurar su configuración (en este caso, debe cambiar el título de su pregunta).

Apoyo

Puede hacer una copia de seguridad de su configuración con

gsettings list-recursively > backup

Esto escribe todas las claves para la copia de seguridad del archivo en su Carpeta personal.

Restaurar

Hasta donde sé, no hay ninguna opción directa para importar el archivo de nuevo a dconf. Tal vez podría escribir una rutina que lea el archivo de respaldo línea por línea y se ejecute gsettings set <input line from backup>para restaurar su configuración.

demel
fuente