จะเก็บการตั้งค่าผู้ใช้สำหรับแอพที่ไหน


12

หากฉันต้องการให้แอปพลิเคชันของฉันจัดเก็บการตั้งค่าบางอย่างนั่นจะคงอยู่เมื่อแอปพลิเคชันปิดแล้วฉันควรจะเก็บไว้ที่ไหน

ฉันไม่ได้พูดอะไรที่ซับซ้อน: สองบูลีนและสตริง (แม้ว่าในอนาคตฉันอาจต้องการจัดเก็บการตั้งค่าที่ซับซ้อนมากขึ้น)

ฉันเคยได้ยิน gconf, dconf, gsettings และอื่น ๆ ที่กล่าวถึงทั้งหมด วิธี "ที่ต้องการ" คืออะไร? โดยเฉพาะอันที่ดีและง่ายใน Python


เกี่ยวข้อง: askubuntu.com/questions/42438/…
Tachyons

คำตอบ:


9

gconfเลิกใช้แล้วดังนั้นสำหรับโครงการใหม่ที่ฉันจะไม่ใช้ dconfเป็นแบ็กเอนด์สำหรับการจัดเก็บการตั้งค่าในฐานะนักพัฒนาแอปพลิเคชั่นโดยปกติแล้วคุณไม่ต้องกังวลกับมัน

สิ่งที่คุณต้องการคือgsettingsAPI ระดับสูง ( เอกสารคู่มือAPI สำหรับ C ) เพื่อจัดเก็บ / เรียกค้นการตั้งค่าโดยไม่รบกวนวิธีการจัดเก็บจริง ๆ gsettingsเป็นส่วนหนึ่งของgioซึ่งเป็นหนึ่งในแพ็คเกจหลักของ gnome (เช่นglibและgobject) โพสต์บล็อกนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับวิธีใช้กับ Python

หากคุณไม่ต้องการที่ขึ้นอยู่กับgio(เช่นคุณจะไม่ได้พัฒนาโปรแกรมประยุกต์ GNOME) และต้องการเก็บ config ไฟล์ง่ายผมขอแนะนำให้ใช้$HOME/.configไดเรกทอรี (หรือสิ่งที่ไดเรกทอรีที่กำหนดโดย$XDG_CONFIG_DIRS) แทน$HOME/.your_appnameซึ่งสอดคล้องกับข้อมูลจำเพาะ freedesktop .


ดูเหมือนว่าลิงก์ของคุณไปยังโพสต์บล็อกนั้นตายแล้ว โอกาสใดที่คุณมีอีกหรือไม่
เซท

@Seth แต่น่าเสียดายที่โพสต์บล็อกที่ฉันเชื่อมโยงไปดูเหมือนจะไม่สามารถใช้ได้อีกต่อไป ฉันแทนที่ลิงก์ด้วยลิงก์ไปยังบล็อกโพสต์อื่นที่ควรเป็นจุดเริ่มต้นที่ดี
Marcel Stimberg

10

แอปพลิเคชันรันทั้งระบบ

สถานที่ที่เหมาะสมในการจัดเก็บจะเป็น:

/etc/[application]/

โดยที่ไดเรกทอรีย่อยเป็นทางเลือก


แอปพลิเคชันทำงานในโหมดต่อผู้ใช้

การตั้งค่าควรเก็บไว้ในหน้าแรกของผู้ใช้โดยเฉพาะอย่างยิ่งในไดเรกทอรีที่ซ่อนอยู่:

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

ดูDebian FHSด้วย


แอปพลิเคชั่นที่ทำงานในX-Desktop

แอปพลิเคชันสำหรับ X-Desktop (เช่น GNOME, KDE, Unity, Xfce) ควรอ้างถึงข้อมูลจำเพาะไดเรกทอรีฐาน XDGที่มีการกำหนดตำแหน่งไฟล์ต่อไปนี้ในตัวแปรท้องถิ่น:

  • $XDG_DATA_HOMEกำหนดไดเรกทอรีฐานสัมพันธ์กับไฟล์ข้อมูลที่ผู้ใช้ควรเก็บไว้ หาก $ XDG_DATA_HOME ไม่ได้ตั้งค่าหรือว่างเปล่าควรใช้ค่าเริ่มต้นเท่ากับ $ HOME / .local / share

  • $XDG_CONFIG_HOMEกำหนดไดเรกทอรีฐานสัมพันธ์กับไฟล์การกำหนดค่าเฉพาะผู้ใช้ที่ควรเก็บไว้ หาก $ XDG_CONFIG_HOME ไม่ได้ตั้งค่าหรือว่างเปล่าควรใช้ค่าเริ่มต้นเท่ากับ $ HOME / .config

  • $XDG_DATA_DIRSกำหนดชุดของไดเรคทอรีฐานที่มีการกำหนดค่าตามความชอบเพื่อค้นหาไฟล์ข้อมูลเพิ่มเติมจากไดเร็กทอรีฐาน $ XDG_DATA_HOME ไดเร็กทอรีใน $ XDG_DATA_DIRS ควรคั่นด้วยโคลอน ':'

  • If $XDG_DATA_DIRS ไม่ได้ตั้งค่าหรือว่างเปล่าควรใช้ค่าเท่ากับ / usr / local / share /: / usr / share /

  • $XDG_CONFIG_DIRSกำหนดชุดของไดเร็กทอรีฐานที่มีการกำหนดค่าตามความชอบเพื่อค้นหาไฟล์คอนฟิกูเรชันนอกเหนือจากไดเร็กทอรีฐาน $ XDG_CONFIG_HOME ไดเร็กทอรีใน $ XDG_CONFIG_DIRS ควรคั่นด้วยโคลอน ':' หาก $ XDG_CONFIG_DIRS ไม่ได้ถูกตั้งค่าหรือว่างเปล่าควรใช้ค่าเท่ากับ / etc / xdg


ไม่พวกเขาควรจะอยู่ใน /home/<user>/.config/application/
ไม่ระบุตัวตน

@ ไม่ระบุชื่อ: มันจะเจ๋งถ้ามีการอ้างอิงสำหรับสิ่งนี้ นโยบายเดเบียนปัจจุบันต้องการ FHS 2.3 ยกเว้นแอปพลิเคชันที่แนะนำให้เก็บการตั้งค่าผู้ใช้ในไฟล์ dot (หรือไดเรกทอรี) ในหน้าแรกของผู้ใช้
Takkat

1

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

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