python修改Gsettings的配置文件
GSettings
的配置文件是 xml
格式的,文件需以 .gschema.xml
结尾,文件名通常与 id
相同。配置文件安装在 /usr/share/glib-2.0/schemas/
目录下,手动添加进去的文件需要执行 sudo glib-complie-schemas /usr/share/glib-2.0/schemas
让其生效。
<?xml version="1.0" encoding="UTF-8"?> <schemalist> <schema path="" id=""> <key type="" name=""> <default></default> <summary></summary> <description></description> </key> </schema> </schemalist>
可以看到一个文件里可以包含多个 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