1.gsettings創建項
應用程序可以使用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>
對于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
執行完上述命令后就可以發現自己定義的schema已經生效:
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)
4.使用實例
4.1顯示系統都安裝了哪些不可重定位的schema
4.2查看org.cinnamon.settings-daemon.plugs都有哪些子schema
4.3查看org.cinnamon.settings-daemon.plugs.power的schema下都有哪些項(key)
4.4查看org.cinnamon.settings-daemon.plugs.power的schema下所有項的取值
4.5查看org.cinnamon.settings-daemon.plugs.power的schema下的項button-hibernate的值
4.6查看org.cinnamon.settings-daemon.plugs.power的schema下的項button-hibernate的取值范圍
4.7修改設置org.cinnamon.settings-daemon.plugs.power的schema下的項button-hibernate的值為shutdown
4.8恢復org.cinnamon.settings-daemon.plugs.power的schema下的項button-hibernate的值為默認值
4.9修改org.cinnamon.settings-daemon.plugs.power的schema下的多項值后,恢復整個schema的所有項為默認值
4.9.1修改前配置截圖
4.9.2修改后配置截圖
4.9.3恢復后的配置截圖
感謝:本文前半部分參考了http://blog.csdn.net/zhgn2/article/details/8834339