启动一个专注于终端的程序

Vnd*_*tta 6 command-line bash 12.04

我正在制作一个脚本,它将从命令行获取输入与其他程序的启动相结合。所以脚本会像这样:

...
launch program
Read input from the terminal
...
Run Code Online (Sandbox Code Playgroud)

问题是当我启动程序时(即使我在后台启动它),终端失去焦点并且启动的程序变得活跃。

如何使用默认的 Ubuntu 命令启动一个程序,将焦点保持在终端上?

谢谢

iBe*_*eve 3

如果您知道终端的标题,则可以在使用命令打开程序后切换回该终端wmctrl(如果窗口立即打开并且您不需要命令sleep):

wmctrl -a <WIN-TITLE>
Run Code Online (Sandbox Code Playgroud)

<WIN-TITLE>不必是完整的标题,例如,如果标题是TESTING,TEST就可以。

根据打开程序所需的时间,您可能需要使用命令sleep来延迟切换回终端。您可以像这样使用它:sleep <SECONDS>s

要从脚本中设置终端的标题,请使用:

NAME="NEW_TITLE"; echo -en "\033]0;$NAME\a"
Run Code Online (Sandbox Code Playgroud)

请参阅此答案以获取更多信息。

例如,这是一个在后台打开程序的小脚本:

NAME="Opening program..."; echo -en "\033]0;$NAME\a"
$1&
sleep 0.75s
wmctrl -a "Opening program"
Run Code Online (Sandbox Code Playgroud)