gsettings简介及常用操作介绍


转载:http://blog.csdn.net/chuangjinweilai/article/details/53215764




gsettings提供了对GSetings的命令行操作。

GSetings实际上是一套高级API,用来操作dconf。

dconf存储着GNOME3的配置,是二进制格式。它做为GSettings的后端系统存在,暴露出低级API。在GNOME2时代,类似的角色是gconf,但它是以XML文本形式存储。

更接地气的说法是,dconf是GNOME3的注册表,gsettings是一个查询、读取、设置注册表键值的命令行工具。

列出所有schema

gsettings list-schemas

查找某个schema

gsettings list-schemas | grep "org.gnome.settings-daemon.plugins.keyboard" org.gnome.settings-daemon.plugins.keyboard

查找某个schema下的所有key

gsettings list-keys "org.gnome.settings-daemon.plugins.keyboard" active priority

查看某个schema下某个key的值

gsettings get "org.gnome.settings-daemon.plugins.keyboard" priority 0

查看某个schema下某个key的值类型

这是一个整形

gsettings range "org.gnome.settings-daemon.plugins.keyboard" priority type i

这是一个boolean类型

gsettings range "org.gnome.settings-daemon.plugins.keyboard" active type b

设置某个schema下某个key的值

gsettings set "org.gnome.settings-daemon.plugins.keyboard" active false

也可以一步到位,同时搜索schema和keys

gsettings list-recursively | grep "org.gnome.settings-daemon.plugins.keyboard" org.gnome.settings-daemon.plugins.keyboard active false org.gnome.settings-daemon.plugins.keyboard priority 0 org.gnome.settings-daemon.plugins.keyboard active false org.gnome.settings-daemon.plugins.keyboard priority 0

如果你觉得命令行操作还是不太直观,可以使用GUI工具 gconf-editor。


1.gsettings通过schema文件创建项

应用程序可以使用gsettings来保存配置信息,可以通过代码在程序中进行设置、修改gsettings的已有的项,但是不能通过程序代码创建新的gsettings项,gsettings的项的在一个叫做schema的规范文件中创建,schema文档其实是一个规范的xml文档。其实例如下:

<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
    <schema path="/org/lili/test/app/testgsettings/" id="org.lili.test.app.testgsettings">
        <key type="b" name="enabled">
            <default>true</default>
            <summary>Enable Testgsetting</summary>
            <description>Globally enable or disable the TestApp,Setting it to "false" will disable TestApp.</description>
        </key>
        <key type="i" name="brightness">
            <default>30</default>
            <summary>The brightness of the screen</summary>
            <description>This is the laptop panel screen brightness used when the session is idle.</description>
        </key>
    </schema>
</schemalist>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

对于schema文件的注意事项:

  • path两头必须都有/,否则会验证失败
  • schema文件的扩展名必须是gschema.xml,否则这个规则文件将无法被正确编译安装,最终无法被gsettings使用
  • 如果想让gsettings能被dconf-editor所读取,则必须指定path属性

    2.schema文件的编译安装

    schema文件并不能直接被gsettings使用,需要用glib-compile-schemas编译器将schema文件编译为二进制文件才能被gsettings所使用。GSettings 会读取 XDG_DATA_DIRS 下的 glib-2.0/schemas路径,所以通常将schema文件放到环境变量XDG_DATA_DIRS/glib-2.0/schemas/路径下,一般为/usr/share/glib-2.0/schemas 和 /usr/local/share/glib-2.0/schemas。例如,我们将schema文件拷贝到/usr/share/glib-2.0/schemas 路径下,我们可以在命令行运行以下命令编译刷新系统的gsettings:

#glib-compile-schemas /usr/share/glib-2.0/schemas
 
 
  • 1

执行完上述命令后就可以发现自己定义的schema已经生效: 
myschema

3.常用的gsettings命令

#gsettings list-schemas             显示系统已安装的不可重定位的schema
#gsettings list-relocatable-schemas 显示已安装的可重定位的schema
#gsettings list-children SCHEMA     显示指定schema的children,其中SCHEMA指xml文件中schema的id属性值,例如实例中的"org.lili.test.app.testgsettings"
#gsettings list-keys SCHEMA         显示指定schema的所有项(key)
#gsettings range SCHEMA KEY         查询指定schema的指定项KEY的有效取值范围
#gsettings get SCHEMA KEY           显示指定schema的指定项KEY的值
#gsettings set SCHEMA KEY VALUE     设置指定schema的指定项KEY的值为VALUE
#gsettings reset SCHEMA KEY         恢复指定schema的指定项KEY的值为默认值
#gsettings reset-recursively SCHEMA 恢复指定schema的所有key的值为默认值
#gsettings list-recursively [SCHEMA]如果有SCHEMA参数,则递归显示指定schema的所有项(key)和值(value),如果没有SCHEMA参数,则递归显示所有schema的所有项(key)和值(value)
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.使用实例

4.1显示系统都安装了哪些不可重定位的schema

gsettings_list-schemas

4.2查看org.cinnamon.settings-daemon.plugs都有哪些子schema

gsettings_list-children

4.3查看org.cinnamon.settings-daemon.plugs.power的schema下都有哪些项(key)

gsettings_list-keys

4.4查看org.cinnamon.settings-daemon.plugs.power的schema下所有项的取值

gsettings_list-recursively

4.5查看org.cinnamon.settings-daemon.plugs.power的schema下的项button-hibernate的值

gsettings_get

4.6查看org.cinnamon.settings-daemon.plugs.power的schema下的项button-hibernate的取值范围

gsettings_range

4.7修改设置org.cinnamon.settings-daemon.plugs.power的schema下的项button-hibernate的值为shutdown

gsettings_set

4.8恢复org.cinnamon.settings-daemon.plugs.power的schema下的项button-hibernate的值为默认值

gsettings_reset

4.9修改org.cinnamon.settings-daemon.plugs.power的schema下的多项值后,恢复整个schema的所有项为默认值

4.9.1修改前配置截图

gsettings_list-recursively

4.9.2修改后配置截图

gsetting_set

4.9.3恢复后的配置截图

gsettings_reset-recursively



  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值