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

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

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

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

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

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

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


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

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

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

13
задан 13 April 2017 в 15:24

2 ответа

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

XDG_CONFIG_HOME=/nonexistent gsettings get SCHEMA KEY
0
ответ дан 13 April 2017 в 15:24

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

Резервное копирование

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

gsettings list-recursively > backup

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

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

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

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: