Gconf, Dconf, Gsettings และความสัมพันธ์ระหว่างพวกเขา


65

ฉันพยายามเข้าใจว่า Gconf, Dconf และ Gsettings ทำงานอย่างไรและความสัมพันธ์ระหว่างพวกเขาเป็นอย่างไร

ทั้งหมดที่ฉันรู้คือ:

  • Gconf - ฐานข้อมูล XML (ระบบแบ็กเอนด์) รุ่นเก่า
  • Dconf - ฐานข้อมูลที่ใช้ BLOB (ระบบส่วนหลัง) ใหม่กว่า
  • Gsettings - เครื่องมือ CLI เพื่อแก้ไขการตั้งค่า ดูเหมือนว่าจะทำงานได้เฉพาะกับ Dconf (แม้ว่าฉันจะเห็นบางที่มันอาจทำงานกับ Gconf)

ฉันรู้ว่าสำหรับ Gconf มี GUI - Gconf-editor และสำหรับ Dconf - Dconf-editor

ดังนั้น:

  1. ระบบแบ็กเอนด์ใดที่ใช้บ่อยกว่า - Dconf หรือ Gconf
  2. Gsettings ใช้ได้กับทั้งคู่เหรอ? และทำไมมันไม่แสดง schmas Dconf ทั้งหมด?
  3. Dconf บันทึกข้อมูลที่ไหน

ฉันจะสนใจเป็นพิเศษในการตั้งค่าที่จัดการโดยเครื่องมือใด (dconf หรือ gsettings) และทำไมมีความแตกต่าง
Johsm

คำตอบ:


38

GConf ล้าสมัยแล้ว มันเป็น API และระบบการกำหนดค่า GNOME 2.x รุ่นเก่าและถูกแทนที่ด้วย DConf / GSettings ในรุ่นที่ใหม่กว่า อย่างไรก็ตามแอปพลิเคชั่นบางตัวยังคงใช้งานได้

GSettings เป็นการใช้งาน GLib ของ DConf ซึ่งเก็บข้อมูลไว้ในฐานข้อมูลไบนารี

gsettingsเครื่องมือบรรทัดคำสั่งเป็นเพียงเครื่องมือในการเข้าถึงหรือแก้ไขการตั้งค่าผ่านทาง GSettings API ในลักษณะเดียวกับที่เก่าgconftoolเครื่องมือบรรทัดคำสั่งสำหรับ GConf


1
GSettings ทำงานกับ GConf ด้วยหรือไม่
idgar

3
ไม่ GSettings เป็นการใช้งานข้อมูลจำเพาะ DConf เครื่องมือบรรทัดคำสั่งไม่ทำงานกับ gconf อย่างไรก็ตามมีบางเลเยอร์ความเข้ากันได้ที่ใช้งานอยู่ในปัจจุบันบน Ubuntu ซึ่งการเปลี่ยนการตั้งค่าใน gsettings หรือ gconf จะส่งผลให้เกิดการเปลี่ยนแปลงที่แพร่กระจายไปยังอีก แม้ว่ามันจะไม่ใช่เรื่องปกติ แต่ก็ไม่ใช่สิ่งที่ต้องพึ่งพา
dobey

อีกสิ่งหนึ่งที่ฉันเห็นบางที่ GSettings ทำงานกับไฟล์การกำหนดค่า มีบางอย่างเกี่ยวกับมัน และทำไม GSettings จึงไม่แสดงสคีมาเหมือนกับ DConf-editor
idgar

1
ส่วนที่น่าสนใจที่ควรทราบคือการตั้งค่าใดที่จัดการโดยเครื่องมือ คีย์ที่มีอยู่เมื่อใช้ dconf หรือ dconf-editor ต่างจากที่สามารถเข้าถึงได้ด้วย gsettings ตัวอย่างเช่นมีคีย์ / com / canonical / unity / always-show-menu เข้าถึงได้ผ่าน dconf แต่ไม่มีคีย์เทียบเท่าที่เข้าถึงได้ผ่าน gsettings ใน Ubuntu 15.04
Johsm

1
@dobey: ขอบคุณที่ช่วยด้วย สิ่งที่ฉันเป็นจริงหลังจากนั้นคือ: การแมประหว่างคีย์ที่ฉันต้องใช้ใน dconf และคีย์ที่ฉันต้องใช้กับ gsettings ทำงานอย่างไร ถ้าฉันรู้วิธีหนึ่งก็มีวิธีคิดขั้นตอนวิธีในการค้นหาวิธีอื่นหรือไม่? ในกรณีที่เป็นรูปธรรมของฉันฉันได้รับ / com / canonical / unity / always-show-menu - ตอนนี้ฉันจะหาคีย์ที่เหมาะสมสำหรับการตั้งค่าได้อย่างไร หากทั้งคู่ใช้ข้อมูลพื้นฐานเดียวกันจะไม่มีการทำแผนที่แบบตรรกะหรือไม่? หรือฉันยังขาดอะไรอยู่
Johsm

43

Dconfเป็นแหล่งข้อมูลที่ออกแบบมาสำหรับการจัดเก็บการกำหนดค่า มันคือการแทนที่สำหรับGconfซึ่งถูกใช้เพื่อวัตถุประสงค์เดียวกัน ในที่สุดโปรแกรมไม่ควรขึ้นอยู่กับ Gconf อีกต่อไป

Gsettingsเป็นห้องสมุดพัฒนาที่ใช้ในการอ่านและเขียนไปยังแบ็กเอนด์ที่เก็บการกำหนดค่า บน Linux ใช้ Dconf แต่ใช้ Windows ใช้รีจิสตรีและบน OS X ใช้ที่เก็บข้อมูลดั้งเดิม

ขอแนะนำให้นักพัฒนาแอปพลิเคชันและผู้ใช้ปลายทางใช้ Gsettings ไม่ใช่ Dconf โดยตรง

ดูสิ่งนี้ด้วย:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.