Di mana menyimpan pengaturan pengguna untuk suatu aplikasi?

12

Jika saya ingin aplikasi saya menyimpan beberapa pengaturan, yang bertahan ketika aplikasi ditutup, lalu di mana saya harus menyimpannya?

Saya tidak berbicara sesuatu yang rumit: dua boolean dan string (meskipun di masa depan saya mungkin ingin menyimpan pengaturan yang lebih kompleks)

Saya pernah mendengar gconf, dconf, gsettings, dll semua disebutkan. Apa metode "disukai"? Lebih disukai yang bagus dan mudah dengan Python.

8128
sumber

Jawaban:

9

gconfsudah usang, jadi untuk proyek baru saya tidak akan menggunakannya. dconfadalah backend untuk menyimpan pengaturan, sebagai pengembang aplikasi Anda biasanya tidak perlu repot dengan itu.

Apa yang tampaknya Anda butuhkan adalah gsettings, API tingkat tinggi ( dokumentasi API untuk C ) untuk menyimpan / mengambil pengaturan tanpa mengganggu bagaimana / di mana mereka sebenarnya disimpan. gsettingsadalah bagian dari gio, yang merupakan salah satu paket inti dari gnome (seperti glibdan gobject). Posting blog ini memberikan pengantar singkat bagaimana menggunakannya dengan Python.

Jika Anda tidak menginginkan dependensi gio(mis. Anda tidak mengembangkan aplikasi GNOME) dan ingin menyimpan file konfigurasi sederhana, saya sarankan untuk menggunakan $HOME/.configdirektori (atau direktori apa pun yang ditentukan oleh $XDG_CONFIG_DIRS) alih-alih $HOME/.your_appname, sesuai dengan spesifikasi freedesktop .

Marcel Stimberg
sumber
Tampaknya tautan Anda ke posting blog sudah mati. Apakah Anda punya kesempatan lain?
Seth
@Seth Sayangnya posting blog yang saya tautkan sepertinya tidak tersedia lagi. Saya mengganti tautan dengan tautan ke posting blog lain yang juga harus menjadi titik awal yang baik.
Marcel Stimberg
10

Aplikasi menjalankan sistem secara luas

tempat yang tepat untuk menyimpan pengaturan adalah:

/etc/[application]/

di mana subdirektori adalah opsional.


Aplikasi berjalan dalam mode per pengguna

pengaturan harus disimpan di HOME pengguna, lebih disukai di direktori tersembunyi:

/home/<user>/<.application>/

Lihat juga Debian FHS .


Aplikasi berjalan di X-Desktop

Aplikasi untuk X-Desktop (mis. GNOME, KDE, Unity, Xfce) harus merujuk pada Spesifikasi Direktori Pangkalan XDG di mana lokasi file berikut didefinisikan dalam variabel lokal:

  • $XDG_DATA_HOMEmendefinisikan direktori dasar relatif dimana file data spesifik pengguna harus disimpan. Jika $ XDG_DATA_HOME tidak disetel atau kosong, standar yang sama dengan $ HOME / .local / share harus digunakan.

  • $XDG_CONFIG_HOMEmendefinisikan direktori dasar relatif dimana file konfigurasi khusus pengguna harus disimpan. Jika $ XDG_CONFIG_HOME tidak disetel atau kosong, standar yang sama dengan $ HOME / .config harus digunakan.

  • $XDG_DATA_DIRSmendefinisikan kumpulan direktori basis yang diurutkan berdasarkan preferensi untuk mencari file data di samping direktori basis $ XDG_DATA_HOME. Direktori dalam $ XDG_DATA_DIRS harus dipisahkan dengan tanda titik dua ':'.

  • If $XDG_DATA_DIRS tidak disetel atau kosong, nilai yang sama dengan / usr / local / share /: / usr / share / harus digunakan.

  • $XDG_CONFIG_DIRSmendefinisikan kumpulan direktori basis yang diurutkan berdasarkan preferensi untuk mencari file konfigurasi selain dari direktori dasar $ XDG_CONFIG_HOME. Direktori dalam $ XDG_CONFIG_DIRS harus dipisahkan dengan tanda titik dua ':'. Jika $ XDG_CONFIG_DIRS tidak disetel atau kosong, nilai yang sama dengan / etc / xdg harus digunakan.

Takkat
sumber
Tidak, mereka harus di /home/<user>/.config/application/
Anonymous
@ Anonim: Alangkah baiknya memiliki referensi untuk ini. Hadir kebijakan Debian membutuhkan FHS 2.3 dengan pengecualian bahwa aplikasi yang direkomendasikan untuk menyimpan pengaturan pengguna dalam file dot (atau direktori) di HOME pengguna.
Takkat