如何从.Xresources加载变量?

2024-10-03 11:15:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我找到了python3-xlib模块,我想它应该能够做到这一点,但我真的不能从中看出正误。。。我知道Xlib的级别非常低而且非常复杂,但我真的希望有一个类似Xlib.get_resource("i3-wm.font")的命令可以为我提供所需的资源


Tags: 模块文件脚本系统python3fonttypefacei3
1条回答
网友
1楼 · 发布于 2024-10-03 11:15:12

你说得对,这看起来很复杂

不过,我在githubhere上发现了一些随机代码,其中包含一些线索。仅允许读取的蒸馏版本为:

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}

不过请记住,这只会抓取整个数据库并将其放入dict中,以便您可以查找精确的键。特别是,它不做X的其他部分所关注的全球化。然而,这应该足以让你开始。特别是res_dict['i3-wm.font']将为您提供该服务

相关问题 更多 >