gpt4 book ai didi

python - 窗口管理器应该如何处理 ConfigureRequestEvent?

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:22 26 4
gpt4 key购买 nike

为了我的罪过(以及为了 乐趣 学习经验)我正在写一个窗口管理器(我知道,我知道)。

我正在使用 python 和 XCB (python-xpyb)。

到目前为止,我已经发现我需要在根窗口上使用 SubStructureRedirect 掩码,并且我已成功传递与应用程序顶级窗口相关的事件。我正在通过启动 xterm 对此进行测试。

我得到一个 ConfigureRequestEvent,然后暂停,然后是另一个 ConfigureRequestEvent,然后是 MapRequestEvent。

当我收到 MapRequestEvent 时,我调用了 connection.core.MapWindowChecked(e.window),这有效,但映射的窗口只有一个或两个像素宽/高。

那么我的问题是,我应该如何处理 ConfigureRequestEvent 以使窗口大小正确(假设这就是我所缺少的)?

更准确地说,我到底叫什么? MapWindowChecked 是一个明显的选择,但我似乎无法找到如何实际配置宽度/高度。我猜它是 ConfigureWindow,但接受的参数对我来说似乎很模糊。上次我调用它时使用了 xcb.xproto.CW.EventMask,但 CW 中的标志似乎都与宽度/高度无关。

PS 关于所有这些的文档对我来说似乎难以捉摸。我看过几个据称使用 xcb 的 python 窗口管理器,它们似乎使用了自己的自定义版本,具有额外的功能。此外,检查/调试正在运行的窗口管理器(它也负责映射调试器的窗口)是一个 PITA,因此我在这里问。使用两台机器或 VM 之类的东西可能会更好。

谢谢。

最佳答案

简短的回答是通过调用 ConfigureWindow 配置窗口(大小、堆叠等)。长答案是在这里你强加政策和荣誉规范,如 XSizeHints。最好查看一些现有 WM 的来源并了解它们的作用。具体做什么取决于您想要的 UI。

让它工作的最简单的事情就是完全按照请求的要求配置窗口,没有策略或提示覆盖。但是您可能会很快看到很多可用性问题,并且必须添加更多智能。

关于python - 窗口管理器应该如何处理 ConfigureRequestEvent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5845717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com