如何获取从 .Xresources 加载的变量?

How to get a variable loaded from .Xresources?

我正在使用 Regolith,它加载了一堆 Xresources,在一些 Xresources 文件中有像 i3-wm.font: typeface_wm 这样的变量。据我了解,这些应该加载到 X11 window 系统中,可以从那里读取。如何在 python 脚本中获取此值,而不需要自己解析文件?

我找到了 python3-xlib 模块,我想它应该能够做到这一点,但我不能真正从中做出正面或反面的东西......我知道 Xlib 非常低级和复杂,但我真的希望有一个类似 Xlib.get_resource("i3-wm.font") 的命令可以让我获得我需要的资源。

你是对的,这看起来很复杂!

我在 github here 上发现了一些随机代码,但其中有一些线索。仅供阅读的提炼版本是:

import Xlib
from Xlib.Xatom import RESOURCE_MANAGER, STRING

res_prop = Xlib.display.Display().screen().root.get_full_property(RESOURCE_MANAGER, STRING)
res_kv = (line.split(':', 1) for line in res_prop.value.decode().split('\n'))
res_dict = {kv[0]: kv[1].strip() for kv in res_kv if len(kv) == 2}

不过请记住,这只是抓取整个数据库并将其推入字典中,以便您可以查找确切的键。特别是,它对 X 的其余部分所关注的通配进行 none。但是,这应该足以让您入门。特别是 res_dict['i3-wm.font'] 会为您准备好。