GSettings 預設值

  1. 在 RHEL/CentOS 6 中使用 firefox 68,預設使用 gtk 2,開啟 file chooser 時,gtk-3.0 的 設定無法使用,所以設定都無法存檔,每次都只能使用預設值。
    [dywang@dywmsi ~]$ firefox -P vnc
    GLib-GIO-Message: Using the 'memory' GSettings backend.  Your settings will 
    not be saved or shared with other applications.
    
  2. 進到 firefox 68 的 glib-2.0/schemas 目錄,其中有 Fine Chooser 的設定檔 org.gtk.Settings.FileChooser.gschema.xml。
    [root@dywmsi ~]# cd /usr/lib64/firefox/bundled/share/glib-2.0/schemas/
    [root@dywmsi schemas]# ll
    total 36
    -rw-r--r--. 1 root root 2839 Nov  1 08:14 gschema.dtd
    -rw-r--r--. 1 root root 2940 Dec 20 16:06 gschemas.compiled
    -rw-r--r--. 1 root root  618 Dec 20 15:27 org.gtk.Demo.gschema.xml
    -rw-r--r--. 1 root root  845 Nov  1 08:14 org.gtk.exampleapp.gschema.xml
    -rw-r--r--. 1 root root  931 Nov  1 08:14 org.gtk.Settings.ColorChooser.gschema.xml
    -rw-r--r--. 1 root root  833 Nov  1 08:14 org.gtk.Settings.Debug.gschema.xml
    -rw-r--r--. 1 root root  623 Nov  1 08:14 org.gtk.Settings.EmojiChooser.gschema.xml
    -rw-r--r--. 1 root root 5359 Dec 20 16:08 org.gtk.Settings.FileChooser.gschema.xml
    
  3. 修改 sort-directories-first (目錄先排),sort-column 以 modified 檔案修改時間排序,sort-order descending 遞減排序,window-size 設定視窗預設大小。
    [root@dywmsi schemas]# vim org.gtk.Settings.FileChooser.gschema.xml
    [root@dywmsi schemas]# egrep "(sort-(column|order|directories-first)|window-size)" \
    -A1 org.gtk.Settings.FileChooser.gschema.xml
        <key type="b" name="sort-directories-first">
          <default>true</default>
    --
        <key name='sort-column' enum='org.gtk.Settings.FileChooser.SortColumn'>
          <default>'modified'</default>
    --
        <key name='sort-order' enum='org.gtk.Settings.FileChooser.SortOrder'>
          <default>'descending'</default>
    --
        <key name='window-size' type='(ii)'>
          <default>(800, 600)</default>
    
  4. 修改 xml 檔後執行 glib-compile-schmas,對目前工作目錄的 xml 檔編譯,產生 gschemas.compiled。執行結果除 window-size 無效,其他設定皆生效。
    [root@dywmsi schemas]# glib-compile-schemas .
    [root@dywmsi schemas]# ll gschema
    gschema.dtd        gschemas.compiled  
    [root@dywmsi schemas]# ll gschemas.compiled 
    -rw-r--r--. 1 root root 2940 Dec 20 16:45 gschemas.compiled