Как прочитать значение ключа по умолчанию с помощью dconf или gsettings?

13

Я хотел бы знать значение по умолчанию для ключа dconf / gsettings.

Мой вопрос является продолжением вопроса ниже: Где я могу получить список SCHEMA / PATH / KEY для использования с gsettings?

Что я пытаюсь сделать, так что создайте скрипт, который читает все мои личные предпочтения, чтобы я мог их резервировать и восстанавливать. Я планирую перебрать все ключи, как и приведенный выше скрипт, посмотреть, какие ключи были изменены по сравнению со значением по умолчанию, и записать их, которые можно восстановить позже.

Я вижу, что dconf-editor отображает значение ключей по умолчанию, но я бы очень хотел написать это. Кроме того, я не понимаю, как можно автоматизировать синтаксический анализ схем /usr/share/glib-2.0/schemas/. Может быть, кто-то может помочь?

gsettings get-default | list-defaults было бы неплохо =)

(Господи, в старые времена было намного проще, когда ты просто держал свой ~ / .somethingrc в подрывной деятельности ... = \


Основываясь на ответе, приведенном ниже, я обновил скрипт для печати схемы, ключа, типа данных ключа, значения по умолчанию и фактического значения:

#!/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

Этот обходной путь в основном покрывает то, что мне нужно. Я продолжу работать над скриптом резервного копирования отсюда.

ZTA
источник
Если кто-то еще пришел сюда в поисках сброса ключа к его значению по умолчанию, то gsettings reset KEYэто путь.
Андреас Сторвик Страуман

Ответы:

11

Кажется, что нет хорошего способа получить значения по умолчанию напрямую, но, поскольку клиент проверяет XDG_CONFIG_HOME в среде, приемлемым обходным решением для получения значений из свежей конфигурации может быть:

XDG_CONFIG_HOME=/nonexistent gsettings get SCHEMA KEY
Джейсон Конти
источник
1

Если вы заинтересованы в резервном копировании и восстановлении настроек (в этом случае вам следует изменить заголовок вашего вопроса).

Резервный

Вы можете сделать резервную копию ваших настроек с

gsettings list-recursively > backup

Это записывает все ключи в файл резервной копии в вашей домашней папке.

Восстановить

Насколько я знаю, нет прямой возможности импортировать файл обратно в dconf. Может быть, вы могли бы написать подпрограмму, которая построчно считывает файл резервной копии и выполняет gsettings set <input line from backup>восстановление ваших настроек.

Демел
источник