如何使用 dconf 或 gsettings 读取默认键值?

如何使用 dconf 或 gsettings 读取默认键值?

我想知道 dconf/gsettings 键的默认值。

我的问题是以下问题的后续: 在哪里可以获得与 gsettings 一起使用的 SCHEMA / PATH / KEY 列表?

我想做的是创建一个脚本来读取我的所有个人偏好设置,以便我可以备份和恢复它们。我计划遍历所有键,就像上面的脚本一样,查看哪些键已从其默认值更改,并记下这些键,以便以后恢复。

我看到 dconf-editor 显示键的默认值,但我非常想编写脚本。另外,我不知道如何自动解析架构 /usr/share/glib-2.0/schemas/。也许有人可以帮忙?

gsettings get-default|list-defaults 就很好了 =)

(天哪,以前只要把 ~/.somethingrc 保存在 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

这个解决方法基本上满足了我的需求。我会从这里继续处理备份脚本。

答案1

似乎没有一个好的方法来直接获取默认值,但由于客户端在环境中检查 XDG_CONFIG_HOME,因此从新配置中获取值的一个不错的解决方法可能是:

XDG_CONFIG_HOME=/nonexistent gsettings get SCHEMA KEY

答案2

如果您有兴趣备份和恢复您的设置(在这种情况下您应该更改问题的标题)。

备份

您可以使用以下方式备份您的设置

gsettings list-recursively > backup

这会将所有键写入文件备份在您的主文件夹中。

恢复

据我所知,没有任何直接选项可以将文件导入回 dconf。也许您可以编写一个例程,逐行读取备份文件并执行gsettings set <input line from backup>以恢复您的设置。

相关内容