4

我正在用 Vala(ac 兼容语言)编写一个应用程序,我需要当前设置的图标主题。
我想避免将 GTK+ 或 Qt 作为依赖项。

我知道 GTK+ 3 有一个settings.ini并且 GTK+ 2 有一个.gtkrc-2.0文件,但是根据这个,这些文件只是在没有运行 XSettings Manager 的情况下的后备。

我试图找到一些关于 XSettings Manager 的信息,似乎XSettings 只是一个由桌面环境实现的规范。最流行的实现可能是 Gnomes gnome-settings-daemon,但也有其他的实现,例如 LXDE 中的 lxsettings-daemon(集成在lxsession中)或XFCE 的xfsettingsd

现在我需要了解如何在 XSettings Manager 中查询Net/IconThemeName键的值。

我找到了这个规范,但我不太明白。(我以前从未使用过 Xlib)
这是我需要的吗?


明确一点:我不想实现 XSettings Manager 规范,但我想查询当前正在运行的实现以获取当前设置的图标主题。

有人可以帮我理解规格吗?这对我来说似乎相当混乱。

还是我做错了?

4

2 回答 2

2

有一个名为 libxsettings-client 的库,它提供了一个用于访问 XSettings 的 C 接口。您需要将 API 移植到 Vala,考虑到它有多小(<70 行),它看起来非常简单。这将取决于x11.vapiVala 中已经包含的 . 查看绑定遗留 API以获取有关如何移植它的信息。

于 2014-06-10T20:38:11.137 回答
2

您可以从xsettingsddump_xsettings包中生成命令(我相信 libxsettings-client 是其中的一部分)。我相信 gnome-settings-daemon 和 unity-settings-daemon 也暴露了 dbus 接口,但是如果你想成为 xsettings manager 不可知论者,你真的需要从 _XSETTINGS_S0 所有者的 _XSETTINGS_SETTINGS 属性中读取值并解析结果(手动或通过 libxsettings )。格式实际上并没有那么复杂,但是您应该记住,所有键都存储在单个窗口属性中,并且您读取并解码所有它们(如果您想更改一个,则需要序列化所有键)

于 2014-06-12T05:46:42.737 回答