Đầu tiên, Ứng dụng không nên lộn xộn vớidconf
Giới thiệu từ trang dự án drc :
dconf
là một hệ thống cấu hình cấp thấp. Mục đích chính của nó là cung cấp phần phụ trợ cho GSinstall trên các nền tảng chưa có hệ thống lưu trữ cấu hình.
Dữ liệu được lưu trữ ở đâu? (Tham khảo: https://wiki.gnome.org/Projects/dconf/SystemAdologists )
Một hồ sơ là một danh sách các cơ sở dữ liệu cấu hình. Có vẻ như Gnome & Unity sử dụng cùng một hồ sơ.
$ cat /etc/dconf/profile/gdm
user-db:user
system-db:gdm
user-db:user
: Cơ sở dữ liệu đầu tiên trong hồ sơ là read-write rw
và nó được tạo trong thư mục chính của người dùng.
$ file ~/.config/dconf/user
/home/sneetsher/.config/dconf/user: GVariant Database file, version 0
system-db:gdm
: chỉ đọc
$ file /etc/dconf/db/gdm
/etc/dconf/db/gdm: GVariant Database file, version 0
dconf
có thể liên kết một cửa hàng kiểu văn bản ngoài Cơ sở dữ liệu GVariant từ db.d/*
thư mục. Ví dụ (Đường dẫn tệp thông báo, vì vậy nó là một phần của system-db:gdm
):
$ cat /etc/dconf/db/gdm.d/00-upstream-settings
# This file is part of the GDM packaging and should not be changed.
#
# Instead create your own file next to it with a higher numbered prefix,
# and run
#
# dconf update
#
[org/gnome/desktop/a11y/keyboard]
enable=true
[org/gnome/desktop/background]
show-desktop-icons=false
...
Schema Files: Mối quan hệ giữa schema id
&schema path
( *.gschema.xml
)
Tệp XML lược đồ trong thư mục data / glib-2.0 của ứng dụng Quickly của tôi là gì? bởi trent cho thấy một ví dụ hay về việc sử dụng API GSinstall trong ứng dụng Nhanh chóng và kết luận của anh ấy dựa trên kinh nghiệm của anh ấy.
Quay lại với Vino. Mỗi ứng dụng sử dụng Cài đặt GS sẽ xác định lược đồ của nó và nên lưu trữ / cài đặt chúng trong /usr/share/glib-2.0/schemas/
(Đó là thư mục glib):
$ dpkg -L vino | grep -i glib-2.0
/usr/share/glib-2.0
/usr/share/glib-2.0/schemas
/usr/share/glib-2.0/schemas/org.gnome.Vino.enums.xml
/usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
$ more /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
<schemalist>
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
<key name='enabled' type='b'>
<summary>Enable remote access to the desktop</summary>
<description>
If true, allows remote access to the desktop via the RFB
protocol. Users on remote machines may then connect to the
desktop using a VNC viewer.
</description>
<default>false</default>
</key>
<key name='prompt-enabled' type='b'>
<summary>Prompt the user before completing a connection</summary>
<description>
If true, remote users accessing the desktop are not allowed
access until the user on the host machine approves the
connection. Recommended especially when access is not password
protected.
</description>
<default>true</default>
</key>
...
Nếu bạn nhận thấy, lược đồ được xác định bằng một id
và a path
. Tên tệp lược đồ theo sau id
giá trị.
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
*.enums.xml
các tệp dành cho khai báo liệt kê tùy chỉnh, được sử dụng làm kiểu dữ liệu mới *.gschema.xml
cùng schema id
.
$ cat /usr/share/glib-2.0/schemas/org.gnome.Vino.enums.xml
<!-- Generated data (by glib-mkenums) -->
<schemalist>
<enum id='org.gnome.Vino.VinoIconVisibility'>
<value nick='never' value='0'/>
<value nick='always' value='1'/>
<value nick='client' value='2'/>
</enum>
</schemalist>
<!-- Generated data ends here -->
$ gsettings range org.gnome.Vino icon-visibility
enum
'never'
'always'
'client'
$ gsettings get org.gnome.Vino icon-visibility
'client'
Biên dịch Schema's (Tham khảo: Chơi với dconf và gnome-chỉnh-tool )
Là một phần của quá trình cài đặt (nó có trình kích hoạt dpkg), lược đồ được biên dịch bằng glib-compile-schemas
công cụ (từ glib)
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
*.gschema.xml
sẽ được biên dịch thành tệp nhị phân /usr/share/glib-2.0/schemas/gschemas.compiled
Tệp ghi đè nhà cung cấp ( *.gschema.override
)
Ngoài các tệp lược đồ, hãy glib-compile-schemas
đọc các tệp ghi đè nhà cung cấp , là các tệp chính có thể ghi đè các giá trị mặc định cho các khóa trong lược đồ (Ref man glib-compile-schemas
:). Chúng chứa các thay đổi được thực hiện bởi phân phối Ubuntu để ghi đè mặc định lược đồ ngược dòng.
$ ls /usr/share/glib-2.0/schemas/*.gschema.override
/usr/share/glib-2.0/schemas/10_compiz-gnome.gschema.override
/usr/share/glib-2.0/schemas/10_desktop-base.gschema.override
/usr/share/glib-2.0/schemas/10_evolution-common.gschema.override
/usr/share/glib-2.0/schemas/10_gnome-settings-daemon.gschema.override
/usr/share/glib-2.0/schemas/10_gnome-shell.gschema.override
/usr/share/glib-2.0/schemas/10_gnome-system-log.gschema.override
/usr/share/glib-2.0/schemas/10_gsettings-desktop-schemas.gschema.override
/usr/share/glib-2.0/schemas/10_libgtk-3-common.gschema.override
/usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override
/usr/share/glib-2.0/schemas/20_ubuntu-gnome-default-settings.gschema.override
$ cat /usr/share/glib-2.0/schemas/10_gnome-settings-daemon.gschema.override
[org.gnome.desktop.wm.keybindings]
switch-input-source=['<Super>space']
switch-input-source-backward=['<Shift><Super>space']
Ví dụ về sử dụng tập tin ghi đè, Xem Cách tùy chỉnh Ubuntu Live CD? (5. Tùy chỉnh 2: Hình nền và Chủ đề).
Khóa tập tin
Hiện tại, dconf chỉ hỗ trợ khóa mỗi khóa, không có khóa đường dẫn phụ. Các giá trị do người dùng xác định sẽ vẫn được lưu trữ user-db
nhưng sẽ không ảnh hưởng đến các ứng dụng. dconf / gsinstall trả về các giá trị mặc định thay cho các khóa bị khóa đó. Các tập tin khóa được lưu trữ trong db.d/locks/
. Thí dụ:
$ cat /etc/dconf/db/gdm.d/locks/00-upstream-settings-locks
/org/gnome/desktop/a11y/keyboard/enable
/org/gnome/desktop/background/show-desktop-icons
/org/gnome/desktop/lockdown/disable-application-handlers
/org/gnome/desktop/lockdown/disable-command-line
/org/gnome/desktop/lockdown/disable-lock-screen
/org/gnome/desktop/lockdown/disable-log-out
/org/gnome/desktop/lockdown/disable-printing
/org/gnome/desktop/lockdown/disable-print-setup
/org/gnome/desktop/lockdown/disable-save-to-disk
/org/gnome/desktop/lockdown/disable-user-switching
...
Sau khi sửa đổi khóa, để được chạy hiệu quả:
sudo dconf update
Một chương trình giới thiệu tốt: Cài đặt dcs: mặc định và khóa
Thay đổi cài đặt toàn cầu
Mặc định cho gsettings
/ dconf-editor
là để chỉnh sửa user-db
. Để thay đổi system-db
, hãy viết một tệp ghi đè mới và biên dịch lại lược đồ.
Tôi không thể làm việc này:
sudo su gdm -c 'gsettings ...'
không phải câu trả lời nào khác ở đây Đặt Tùy chọn Gnome mặc định / Toàn cầu (Gnome 3) , có thể là bản phát hành cũ.