在快速创建的应用程序上访问 Gio.Gsettings 时出错

在快速创建的应用程序上访问 Gio.Gsettings 时出错

我正在尝试使用 quick/pygtk 堆栈开发应用程序。我已在 ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml 中正确设置了 Gsettings 架构,并且我能够通过以下方式在位于 ~/app-name-here/app-name-here/PreferencesDialog.py 的首选项对话框窗口中正常访问它

from gi.repository import Gtk, Gio
settings = Gio.Settings("net.launchpad.app-name-here")
settings.get_boolean('notify')
settings.set_boolean('notify', True)

但是当我尝试检查位于 ~/app-name-here/bin/Daemon.py 中的文件中某个设置的值时,我将其用作脚本在后台运行并通过类似的方法发送通知

from gi.repository import Gio
settings = Gio.Settings("net.launchpad.app-name-here")
settings.get_boolean('notify')

它失败了,如下所示

settings = Gio.Settings("net.launchpad.app-name-here")

并吐出一个严重的错误

(Daemon.py:26100): GLib-GIO-ERROR **: Settings schema 'net.launchpad.app-name-here' is not installed

尽管我可以打开 dconf-editor 并在 net/launchpad/app-name-here 下找到设置。有什么想法吗?

答案1

所以我想我可能已经伪解决了我自己的问题。我将我的模式从~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml复制/usr/share/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml到然后编译了我的模式。如果它可以帮助任何人,我会在下面放置执行此操作的命令。(将 app-name-here 替换为您的快速应用程序的实际名称)我相信如果我将我的应用程序打包成 *deb 然后安装它,这将自动完成。我相信问题是模式不适用于所有用户或我正在工作的目录之外的代码。

$: sudo cp ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml /usr/share/glib-2.0/schemas/
$: sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

答案2

“快跑”将您的 ./data/ 目录添加到 XDG_DATA_DIRS 环境变量,这样 Gio.GSettings 就可以找到本地编译的 glib 模式。如果您也在 Daemon.py 中执行此操作,您将能够从开发目录中运行它。

相关内容