ऐप के लिए उपयोगकर्ता सेटिंग्स कहाँ संग्रहीत करें?


12

अगर मैं चाहता हूं कि मेरा आवेदन कुछ सेटिंग्स को स्टोर करने के लिए है, जो एक आवेदन बंद होने पर बनी रहती है, तो मुझे उन्हें कहां स्टोर करना चाहिए?

मैं कुछ भी जटिल नहीं बोल रहा हूं: दो बूलियन और एक स्ट्रिंग (हालांकि भविष्य में मैं अधिक जटिल सेटिंग्स को स्टोर करना चाहता हूं)

मैंने सुना है gconf, dconf, gsettings, आदि सभी का उल्लेख है। "पसंदीदा" विधि क्या है? अधिमानतः पाइथन में एक अच्छा और आसान है।


जवाबों:


9

gconfपदावनत किया जाता है, इसलिए एक नई परियोजना के लिए मैं इसका उपयोग नहीं करूंगा। dconfसेटिंग्स को संग्रहीत करने के लिए एक बैकएंड है, एक एप्लिकेशन डेवलपर के रूप में आपको आमतौर पर इसके साथ परेशान नहीं होना चाहिए।

आपको जो चाहिए लगता है gsettings, वह उच्च स्तरीय एपीआई ( सी के लिए एपीआई प्रलेखन ) को कैसे / जहां वे वास्तव में संग्रहीत हैं, परेशान किए बिना सेटिंग्स को संग्रहीत / पुनर्प्राप्त करने के लिए। gsettingsका हिस्सा है gio, जो सूक्ति (जैसे glibऔर gobject) के मुख्य पैकेजों में से एक है । यह ब्लॉग पोस्ट एक छोटा परिचय देता है कि इसे पायथन के साथ कैसे उपयोग किया जाए।

यदि आप कोई निर्भरता नहीं चाहते हैं gio(उदाहरण के लिए आप एक GNOME एप्लिकेशन विकसित नहीं कर रहे हैं) और सरल कॉन्फिगरेशन फ़ाइलों को संग्रहीत करना चाहते हैं, तो मैं फ्रीडेशॉपटॉप युक्ति के अनुरूप $HOME/.configनिर्देशिका (या जो भी निर्देशिका द्वारा परिभाषित किया गया है $XDG_CONFIG_DIRS) का उपयोग करने का सुझाव दूंगा।$HOME/.your_appname


ऐसा लगता है कि ब्लॉग पोस्ट के लिए आपका लिंक मर चुका है। आपके पास कोई और मौका है?
सेठ

@ दुर्भाग्य से, जिस ब्लॉग पोस्ट को मैं लिंक कर रहा था, वह अब उपलब्ध नहीं है। मैंने लिंक को एक अन्य ब्लॉग पोस्ट के लिंक के साथ बदल दिया जो एक अच्छा प्रारंभिक बिंदु होना चाहिए।
मार्सेल स्टिमबर्ग

10

एप्लिकेशन सिस्टम चौड़ा चलता है

सेटिंग्स को स्टोर करने के लिए उपयुक्त स्थान होगा:

/etc/[application]/

जहां एक उपनिर्देशिका वैकल्पिक है।


एप्लिकेशन प्रति उपयोगकर्ता मोड में चलता है

सेटिंग्स को उपयोगकर्ता के घर में संग्रहीत किया जाना चाहिए, अधिमानतः एक छिपी निर्देशिका में:

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

डेबियन एफएचएस भी देखें ।


एक्स-डेस्कटॉप में चल रहे एप्लिकेशन

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 / लोकल / शेयर /: / usr / शेयर / के बराबर मूल्य का उपयोग किया जाना चाहिए।

  • $XDG_CONFIG_DIRS$ XDG_CONFIG_HIN बेस डायरेक्टरी के अलावा कॉन्फ़िगरेशन फ़ाइलों को खोजने के लिए प्राथमिकता-निर्धारित सेट को निर्धारित करता है। $ XDG_CONFIG_DIRS में निर्देशिकाओं को एक ':' के साथ अलग किया जाना चाहिए। यदि $ XDG_CONFIG_DIRS सेट या खाली नहीं है, तो / etc / xdg के बराबर मूल्य का उपयोग किया जाना चाहिए।


नहीं, वे /home/<user>/.config/application/ में होना चाहिए
बेनामी

@ अज्ञात: इसके लिए एक संदर्भ होना अच्छा होगा। वर्तमान डेबियन नीति के लिए FHS 2.3 की आवश्यकता होती है, अपवाद के साथ कि उपयोगकर्ता के घर में एक डॉट फ़ाइल (या निर्देशिका) में उपयोगकर्ता सेटिंग्स को संग्रहीत करने के लिए अनुप्रयोगों की सिफारिश की जाती है।
ताकत

1

जल्दी से , जो उबंटू के लिए आवेदन विकास के लिए नए सहायकों में से एक है , डेस्कटॉप के साथ सभी वरीयताओं को संग्रहीत करने में चूक करता है । फायदा यह है कि उन सेटिंग्स को उबंटू वन टूल्स के माध्यम से अन्य इंस्टॉलेशन के साथ सिंक्रनाइज़ किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.