我有一个全屏OpenGL程序,我写了(请参阅https://github.com/ehsteve/SAAS中的display.cpp获取完整的源代码),我想在X11启动时自动打开它。我已经编辑了我的xinitrc来启动它
/path/to/binary/display &
xterm -geometry 80x66+0+0 -name login &
exec twm
问题是我的程序打开然后被xterm掩盖了。我希望我的程序能够在前台进行,而xterm在后台运行,以便当我退出时,我会被xterm呈现。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
这可能有效:
(sleep 3; /path/to/binary/display) &
这是一种黑客行为,但它会延迟程序立即启动。 xterm可能会在3秒后打开,然后你的其他程序将打开。您可以将参数更改为sleep
,使其看起来效果最佳。
另一种选择是编辑显示程序的源代码,要求窗口管理器始终将其置于顶部。一些窗口管理器允许您在选项菜单中设置这种类型的东西,但可能不是twm。
如果您希望xwininfo
时间更准确,那么另一个想法是使用sleep
执行某些操作。我还没试过这个。
如果您知道xterm窗口出现时将被命名的内容,并且没有其他窗口具有该名称,您可以执行以下操作:
xterm &
(while ! xwininfo -name xterm >/dev/null 2>&1; do sleep .2; done; exec /path/to/binary/display) &
等到xterm出现,而不是仅仅希望3秒左右。
我不确定您是否应该在exec
中拥有(sleep 3; exec /path/to/binary/display) &
。没有它,可能会有一个bash进程不必要地运行,直到display
退出。