python修改Gsettings的配置文件
阅读原文时间:2023年07月10日阅读:1

GSettings 的配置文件是 xml 格式的,文件需以 .gschema.xml 结尾,文件名通常与 id 相同。配置文件安装在 /usr/share/glib-2.0/schemas/ 目录下,手动添加进去的文件需要执行 sudo glib-complie-schemas /usr/share/glib-2.0/schemas 让其生效。


可以看到一个文件里可以包含多个 schema ,每个 schema 可由多个 key 组成。详细说明如下:

  • id

    schema 中的 id 需要在整个配置系统中是唯一的,不然执行 glib-compile-schemas 时会忽略重复的 id ; id 的开头通常使用与应用相关的域名

  • path

    schema 中的 path 必须是以 / 开头并且以 / 结尾,不能包含连续的 / , path 用于指定在 storage 中存储路径,可以与 id 不一致

  • name

    key 的名称,需要在此 schema 中是唯一的, name 的值由小写字母、数字和 - 组成,并且开头必须是小写字母,不能以 - 结尾,也不能出现连续的 -

  • type

    key 的类型,需要是 GVariant 支持的类型,除了可以使用基本的类型外,也可按照 GVariant 的方式组合类型

  • default

    key 的默认值

  • summary

    key 的简单描述

  • description

    key 的详细描述

python如何修改呢?

from gi.repository import Gio # 导入Gio库

gso = Gio.Settings("com.gh.device.report") # string schema_id

gso.set_int("report-type",1) # 传入值为key name/value,注意key的类型,选择set_boolean()/set_int()/set_string/set_double/set_enum等
a = gso.get_value("report-type")# 获取key的值

gso.set_boolean("https-enable",0)
b = gso.get_value("https-enable")

可能会出现修改不成功情况,需要开启什么东西ps -eaf |grep dbus,我也不太懂,欢迎留言。

参考文档链接:

https://segmentfault.com/a/1190000019968756

https://valadoc.org/gio-2.0/GLib.Settings.Settings.html