Gconf, Dconf, Gsettings, dan hubungan di antara mereka

65

Saya mencoba memahami cara kerja Gconf, Dconf, dan Gsettings dan apa hubungan keduanya.

Yang saya tahu adalah:

  • Gconf - basis data berbasis XML (sistem backend). Yang lebih tua.
  • Dconf - database berbasis BLOB (sistem backend). Yang lebih baru.
  • Gsettings - Alat CLI untuk mengedit pengaturan. Sepertinya itu hanya berfungsi dengan Dconf (walaupun saya melihat di suatu tempat itu mungkin bekerja dengan Gconf).

Saya tahu bahwa untuk Gconf ada GUI - Gconf-editor, dan untuk Dconf - Dconf-editor.

Begitu:

  1. Sistem backend mana yang lebih sering digunakan - Dconf atau Gconf?
  2. Gsettings bekerja dengan keduanya? Dan mengapa itu tidak menampilkan semua skema Dconf?
  3. Di mana Dconf menyimpan datanya?
idgar
sumber
Saya akan sangat tertarik pada pengaturan mana yang ditangani oleh alat mana (dconf atau gsettings) dan mengapa ada perbedaan?
Johsm

Jawaban:

39

GConf sudah usang. Ini adalah API dan sistem konfigurasi GNOME 2.x yang lebih lama, dan telah digantikan oleh DConf / GSettings dalam versi yang lebih baru. Namun, beberapa aplikasi masih menggunakannya.

GSettings adalah implementasi GLonf dari DConf, yang menyimpan datanya dalam basis data biner.

The gsettingstool baris perintah hanyalah sebuah alat untuk mengakses atau mengubah pengaturan melalui API gsettings, dengan cara yang sama yang lebih tua gconftooltool baris perintah untuk GConf.

dobey
sumber
1
Apakah GSettings juga berfungsi dengan GConf?
idgar
3
Tidak, GSettings adalah implementasi dari spesifikasi DConf. Alat baris perintah tidak berfungsi dengan gconf. Namun demikian, beberapa lapisan kompatibilitas saat ini digunakan di Ubuntu, di mana mengubah pengaturan di gsettings atau gconf, akan menghasilkan perubahan yang disebarkan ke yang lain. Ini tidak umum, dan bukan sesuatu yang bisa diandalkan.
dobey
hal lain, saya melihat suatu tempat bahwa GSettings berfungsi dengan file konfigurasi. apakah ada sesuatu tentang itu? dan mengapa GSettings tidak menampilkan skema yang sama dengan DConf-editor?
idgar
1
Bagian yang menarik untuk diketahui adalah pengaturan mana yang dikelola oleh alat apa? Kunci yang ada saat menggunakan dconf atau dconf-editor berbeda dari yang dapat diakses dengan gsettings, misalnya ada kunci / com / canonical / unity / selalu-tampilkan-menu yang dapat diakses melalui dconf tetapi tidak ada kunci yang dapat diakses melalui gsettings di Ubuntu 15.04.
Johsm
1
@oby: terima kasih telah membantu dengan ini. Apa yang saya benar-benar kejar adalah: bagaimana pemetaan antara kunci yang harus saya gunakan di dconf dan kunci yang harus saya gunakan dengan gsettings berfungsi? Jika saya tahu satu, apakah ada cara algoritmik untuk menemukan yang lain? Dalam kasus konkret saya, saya diberikan / com / canonical / unity / always-show-menus - sekarang bagaimana saya menemukan kunci yang sesuai untuk gsettings? Jika keduanya menggunakan data dasar yang sama, haruskah tidak ada pemetaan logis? Atau apakah saya masih melewatkan sesuatu?
Johsm
43

Dconf adalah penyimpanan data yang dirancang untuk menyimpan konfigurasi. Ini adalah pengganti untuk Gconf , yang digunakan untuk tujuan yang sama. Akhirnya, tidak ada program yang harus bergantung pada Gconf lagi.

Gsettings adalah pustaka pengembangan yang digunakan untuk membaca dan menulis ke backend toko konfigurasi. Di Linux, ia menggunakan Dconf, tetapi pada Windows, ia menggunakan registri, dan pada OS X, ia menggunakan penyimpanan data asli.

Pengembang aplikasi dan pengguna akhir disarankan untuk menggunakan Gsettings, bukan Dconf secara langsung.

Lihat juga:

Flimm
sumber