Kök ayrıcalıkları olmayan bir Gsettings Şemasını nasıl yükleyebilirim?


14

Bir Gsettings Şeması yüklemek için tipik iş akışı şudur:

  1. Uzantısı .gschema.xmlolan ve şunun gibi içeriklerle bir şema oluşturun :

    <?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. Şemayı konumuna kopyalayın /usr/share/glib-2.0/schemas/.

  3. Bu komutu çalıştırarak şemayı derleyin:

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

Ancak, yazmak için /usr/share/glib-2.0/schemas/kök ayrıcalıkları gerekir. Genel olmayan bir kullanıcı dizinine şema yüklemenin bir yolu var mı?

Yanıtlar:


16

Gsettings Şemalarınızı kullanıcı tarafından yazılabilir bir dizine kopyalayıp derleyebilirsiniz:

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

Zor bit, uygulamayı söz konusu dizini kullanacak şekilde yapılandırmaktır. Bunu yapmanın iki yolu vardır:

  • İle GSETTINGS_SCHEMA_DIRortam değişkeni:

    $ GSETTINGS_SCHEMA_DIR=~/schemas/ ./example.py
  • Veya GSettingsSchemaSource ve GSettingSchema nesnelerini kullanarak:

    Programınızın kaynak koduna erişiminiz varsa, derlenmiş şemaları herhangi bir dizinden yüklemek için bu programı değiştirebilirsiniz. GObject içgözlemi ile herhangi bir programlama dilinde yapabilmenize rağmen, Python'da nasıl yapacağınız aşağıda açıklanmıştır:

    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)

Referanslar:


Ayrıca , belirli bir şemanın zaten yüklü olup olmadığını nasıl kontrol edeceğinizi biliyor musunuz (ve yukarıdakileri yalnızca yüklü değilse)?
Pietro Battiston

Bu belgelere göre dizini içeren glib-2.0/schemasdizini XDG_DATA_DIRSortam değişkenine de ekleyebilirsiniz .
ntc2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.