सबसे पहले, Apps के साथ खिलवाड़ नहीं करना चाहिएdconf
Dconf परियोजना पृष्ठ से परिचय :
dconfएक निम्न-स्तरीय कॉन्फ़िगरेशन सिस्टम है। इसका मुख्य उद्देश्य उन प्लेटफार्मों पर GSettings को एक बैकएंड प्रदान करना है जिनके पास पहले से कॉन्फ़िगरेशन स्टोरेज सिस्टम नहीं है।
डेटा कहाँ संग्रहीत किया गया है? (संदर्भ: https://wiki.gnome.org/Projects/dconf/SystemAdministrators )
एक प्रोफ़ाइल कॉन्फ़िगरेशन डेटाबेस की एक सूची है। ऐसा लगता है कि गनोम और एकता एक ही प्रोफ़ाइल का उपयोग करते हैं।
$ cat /etc/dconf/profile/gdm
user-db:user
system-db:gdm
user-db:user: प्रोफाइल में पहला डेटाबेस रीड-राइट है rwऔर इसे उपयोगकर्ता के होम डायरेक्टरी में बनाया गया है।
$ file ~/.config/dconf/user
/home/sneetsher/.config/dconf/user: GVariant Database file, version 0
system-db:gdm: सिफ़ पढ़िये
$ file /etc/dconf/db/gdm
/etc/dconf/db/gdm: GVariant Database file, version 0
dconfdb.d/*फ़ोल्डर से GVariant Database के अलावा एक टेक्स्ट स्टाइल स्टोर को बाँध सकता है । उदाहरण (सूचना फ़ाइल पथ, इसलिए यह एक हिस्सा है 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 idऔरschema path ( *.gschema.xml) के बीच संबंध
मेरे त्वरित आवेदन के डेटा / glib-2.0 फ़ोल्डर में स्कीमा XML फ़ाइल क्या है? ट्रेंट द्वारा एक त्वरित आवेदन में GSettings एपीआई का उपयोग करने का एक अच्छा उदाहरण दिखाता है, और उनके अनुभव के आधार पर उनका निष्कर्ष।
वापस करने के लिए Vino। GSsettings का उपयोग करने वाले प्रत्येक एप्लिकेशन को अपने स्कीमा को परिभाषित करना चाहिए और उन्हें /usr/share/glib-2.0/schemas/इसमें स्टोर करना चाहिए / स्थापित करना चाहिए (यह एक शानदार निर्देशिका है):
$ 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>
...
अगर आपने गौर किया, तो स्कीमा को idए और ए के साथ परिभाषित किया गया है path। स्कीमा फ़ाइल नाम idमान का अनुसरण करता है ।
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
*.enums.xmlफाइलें कस्टम एन्यूमरेशन डिक्लेरेशन के लिए हैं, *.gschema.xmlउसी के साथ नए डेटा प्रकारों के रूप में उपयोग किया जाए 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'
संकलन स्कीमा के (रेफरी: dconf और सूक्ति-ट्वीक-उपकरण के साथ बजाना )
स्थापना प्रक्रिया के भाग के रूप में (इसमें dpkg ट्रिगर है), स्कीमा को glib-compile-schemasउपकरण से संकलित किया जाता है (glib से)
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
*.gschema.xml एक बाइनरी फ़ाइल के लिए संकलित किया जाएगा /usr/share/glib-2.0/schemas/gschemas.compiled
विक्रेता ओवरराइड फ़ाइलें ( *.gschema.override)
स्कीमा फ़ाइलों के अलावा, वेंडर ओवरराइड फ़ाइलों को glib-compile-schemasपढ़ता है , जो कुंजी फाइलें हैं जो स्कीमा में कुंजी के लिए डिफ़ॉल्ट मान को ओवरराइड कर सकती हैं (Ref:) । वे अपस्ट्रीम स्कीमा चूक को ओवरराइड करने के लिए उबंटू वितरण द्वारा किए गए परिवर्तन शामिल हैं।man glib-compile-schemas
$ 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']
ओवरराइड फ़ाइलों का उपयोग उदाहरण, Ubuntu लाइव सीडी को अनुकूलित करने के लिए कैसे देखें ? (5. अनुकूलन 2: पृष्ठभूमि और विषय-वस्तु)।
फ़ाइलों को लॉक करें
वर्तमान में, dconf केवल प्रति-कुंजी लॉकिंग का समर्थन करता है, कोई उप-पथ लॉक नहीं। उपयोगकर्ता परिभाषित मूल्य अभी भी संग्रहीत किए user-dbजाएंगे , लेकिन अनुप्रयोगों पर कोई प्रभाव नहीं पड़ेगा। dconf / gsettings उन बंद कुंजियों के बदले डिफ़ॉल्ट मान देता है। लॉक फ़ाइलों में संग्रहीत हैं db.d/locks/। उदाहरण:
$ 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
...
ताले संशोधन के बाद, प्रभावी चलाने के लिए:
sudo dconf update
एक अच्छा प्रदर्शन: dconf सेटिंग्स: चूक और ताले
ग्लोबल सेटिंग्स बदलना
के लिए डिफ़ॉल्ट gsettings/ dconf-editorसंपादित करना है user-db। बदलने के लिए system-db, एक नई ओवरराइड फ़ाइल लिखें और स्कीमा को पुनः लिखें।
मुझे यह काम नहीं मिला:
sudo su gdm -c 'gsettings ...'
न तो अन्य उत्तर यहां सेट डिफॉल्ट / ग्लोबल गनोम प्रिवेंसेस (ग्नोम 3) , हो सकता है कि एक पुरानी रिलीज के लिए था।