我正在用Vala(一种兼容c语言)编写一个应用程序,我需要当前设置的图标主题。
我想避免将GTK +或Qt作为依赖项。
我知道GTK + 3有 settings.ini 而GTK + 2有 .gtkrc-2.0 文件,但根据this这些文件只是如果没有XSettings Manager正在运行,则会出现回退。
我试图找到有关XSettings Manager和it seems的一些信息,XSettings只是一个由桌面环境实现的规范。最流行的实现可能是Gnomes gnome-settings-daemon ,但在LXDE中还有其他像 lxsettings-daemon (集成在 lxsession 中)或< XFCE的em> xfsettingsd 。
现在我需要了解如何在XSettings Manager中查询Net/IconThemeName键的值。
我找到this specification,但我不太明白。 (我之前从未与Xlib合作过)
这是我需要的吗?
要明确:我不想实现XSettings Manager规范,但我想查询当前设置的图标主题的当前运行实现。
有人可以帮我理解the spec吗?这似乎让我很困惑。
或者我完全错了吗?
答案 0 :(得分:2)
有一个名为libxsettings-client的库,它提供了一个用于访问XSettings的C接口。您需要将API移植到Vala,考虑到它有多小(<70行),它看起来非常简单。它取决于x11.vapi
,它已包含在Vala中。有关如何移植它的信息,请查看binding legacy APIs。
答案 1 :(得分:2)
您可以从xsettingsd包中生成dump_xsettings
命令(我相信libxsettings-client是其中的一部分)。我相信gnome-settings-daemon和unity-settings-daemon也会公开dbus接口,但是如果你想成为xsettings管理器不可知的,你真的需要从_XSETTINGS_S0所有者的_XSETTINGS_SETTINGS属性读取值并解析结果(手动或通过libxsettings)。格式实际上并不复杂,但您应该记住,所有键都存储在单个窗口属性中,您可以读取和解码所有键(如果您想更改一个,则需要序列化所有键)