如何在xinitrc中将程序设置为前台?

时间:2014-11-14 23:58:34

标签: x11

我有一个全屏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呈现。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

丑壳诡计

这可能有效:

(sleep 3; /path/to/binary/display) &

这是一种黑客行为,但它会延迟程序立即启动。 xterm可能会在3秒后打开,然后你的其他程序将打开。您可以将参数更改为sleep,使其看起来效果最佳。

窗口管理器提示

另一种选择是编辑显示程序的源代码,要求窗口管理器始终将其置于顶部。一些窗口管理器允许您在选项菜单中设置这种类型的东西,但可能不是twm。

Uglier shell技巧

如果您希望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退出。