gpt4 book ai didi

linux - 是否有可靠的方法以编程方式确定窗口管理器已完全初始化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:41 24 4
gpt4 key购买 nike

我想用一个窗口管理器和一个全屏程序运行一个最小的 X session 。显而易见的方法是在 .xinitrc 中放入类似这样的内容:

metacity & # this could be any window manager
exec my-fullscreen-app

但由于它们是并行启动的,因此存在一些竞争条件。我不希望我的应用程序在窗口管理器准备就绪之前出现,因为那时它的窗口将明显调整为全屏模式。我想先确定窗口管理器已经完成初始化。

我想到的最好的是这样的:

metacity &
while ! xprop -root | grep -q _NET_SUPPORTING_WM_CHECK
do
sleep 0.1
done
sleep 0.3
exec my-fullscreen-app

但仅仅因为 _NET_SUPPORTING_WM_CHECK 已在根窗口上设置并不一定意味着 WM 真正准备就绪,并且在它之后的 0.3 秒休眠是一种杂乱,在某些系统上可能是严重的矫枉过正,并且可能在某些系统上完全不足其他。

那么有没有更好的方法来可靠地感知窗口管理器是否已完全初始化?

最佳答案

简短的回答是否定的,没有办法。

尤其是在设置 _NET_SUPPORTING_WM_CHECK 属性之后,metacity 仍然有其他事情要做。

我认为你的方法是你能做到的最好的。

从好的方面来说,除非有错误,否则除了装饰性的之外,种族不应该有任何影响。 (即显示的事物并非处于最终状态)

为减轻影响,您可能需要在映射之前手动将窗口设置为全屏大小。之后让WM设置大小。

关于linux - 是否有可靠的方法以编程方式确定窗口管理器已完全初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717023/

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