मैं रूट विशेषाधिकार के बिना Gsettings स्कीमा कैसे स्थापित कर सकता हूं?


14

Gsettings स्कीमा स्थापित करने के लिए विशिष्ट वर्कफ़्लो यह है:

  1. .gschema.xmlइस तरह की सामग्री के साथ, विस्तार के साथ एक स्कीमा बनाएं :

    <?xml version="1.0" encoding="UTF-8"?>
    <schemalist>
      <schema id="com.companyname.appname" path="/com/companyname/appname/">
          <key type="b" name="mybool">
              <default>false</default>
              <summary>Example summary</summary>
              <description>Example description</description>
          </key>
      </schema>
    </schemalist>
  2. स्कीमा को कॉपी करें /usr/share/glib-2.0/schemas/

  3. इस आदेश को चलाकर स्कीमा संकलित करें:

    sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

हालांकि, /usr/share/glib-2.0/schemas/रूट विशेषाधिकारों की आवश्यकता के लिए लेखन । क्या एक गैर-वैश्विक उपयोगकर्ता निर्देशिका में स्कीमा स्थापित करने का एक तरीका है?

जवाबों:


16

आप अपने Gsettings Schemas को उपयोगकर्ता-योग्य निर्देशिका में कॉपी और संकलित कर सकते हैं:

$ cp com.companyname.appname ~/schemas/
$ glib-compile-schemas ~/schemas/

मुश्किल बिट उस एप्लिकेशन को उस विशेष निर्देशिका का उपयोग करने के लिए कॉन्फ़िगर करना है। इसे करने के दो तरीके हैं:

  • साथ GSETTINGS_SCHEMA_DIRवातावरण चर:

    $ GSETTINGS_SCHEMA_DIR=~/schemas/ ./example.py
  • या GSettingsSchemaSource और GSettingSchema ऑब्जेक्ट का उपयोग करना:

    यदि आपके पास अपने कार्यक्रम के स्रोत कोड तक पहुंच है, तो आप इसे किसी भी निर्देशिका से संकलित स्कीमा को लोड करने के लिए संशोधित कर सकते हैं। यहाँ यह पायथन में कैसे किया जाएगा, हालाँकि आप इसे किसी भी प्रोग्रामिंग भाषा में Gobject आत्मनिरीक्षण के साथ कर सकते हैं:

    schema_source = Gio.SettingsSchemaSource.new_from_directory(
        os.path.expanduser("~/schemas"),
        Gio.SettingsSchemaSource.get_default(),
        False,
    )
    schema = schema_source.lookup('com.companyname.appname', False)
    settings = Gio.Settings.new_full(schema, None, None)
    settings.set_boolean('mybool', True)

संदर्भ:


क्या आप यह भी जानते हैं कि अगर किसी दिए गए स्कीमा को पहले से इंस्टॉल किया गया है (और यदि ऐसा नहीं है तो केवल इसे कैसे करें) कैसे जांचें ?
पिएत्रो बेटिस्टन

इन डॉक्स के अनुसार आप डायरेक्टरी वाले glib-2.0/schemasडाइरेक्टरी को XDG_DATA_DIRSपर्यावरण चर में भी जोड़ सकते हैं ।
ntc2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.