Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux bash脚本在显示图像时失去焦点_Linux_Bash_Shell_Focus - Fatal编程技术网

Linux bash脚本在显示图像时失去焦点

Linux bash脚本在显示图像时失去焦点,linux,bash,shell,focus,Linux,Bash,Shell,Focus,我试图找出如何在shell脚本中同时显示图像时不失去焦点。用户输入可能随时出现,但观看拍摄的照片似乎很重要 为了澄清,我在输出图像时没有问题。显示效果很好,动画和feh等也很好。。我需要的是shellscript在显示最后拍摄的图像时,仍然处理用户输入(在本例中为“t”),时间长度未定义 我正在用bash编写Linux 下面是我正在尝试的一个例子: #!/bin/bash i=0 capture() { cd ~/Desktop/ani streamer -c /dev/vi

我试图找出如何在shell脚本中同时显示图像时不失去焦点。用户输入可能随时出现,但观看拍摄的照片似乎很重要

为了澄清,我在输出图像时没有问题。显示效果很好,动画和feh等也很好。。我需要的是shellscript在显示最后拍摄的图像时,仍然处理用户输入(在本例中为“t”),时间长度未定义

我正在用bash编写Linux

下面是我正在尝试的一个例子:

#!/bin/bash

i=0

capture() {
    cd ~/Desktop/ani
    streamer -c /dev/video0 -s 800x600 -o outfile$i.jpeg
    display outfile$i.jpeg &
    let i++
}   

while true; do
    #clear
    read -rsn1 input

    if [ "$input" = "t" ]; then
           capture
    else
        exit
    fi
done

在实际的脚本中,我可能会继续拍照,所以我想继续收听用户输入。我可以想象几种方法来实现这一点,但我想不出来。

继续收听用户输入。你可以像我一样

while true; do
#clear
    read -p "Your input: " input

    if [ "$input" == "t" ]; then
           capture
    fi

done

解决这个问题的一个相当丑陋的方法是:安装实用程序
wmctrl
(在debian/Ubuntu中,
sudo-apt-get-install-wmctrl
)。然后,在
显示
命令后,添加:

sleep 1
wmctrl -i -a "$WINDOWID"

这将休眠一秒钟(留出一些时间让
display
命令完成加载并将此值调整到您认为合适的值)。然后,
wmctrl
将使用变量
WINDOWID
(希望由您的终端仿真器设置)的值作为数值(
-i
),并提升窗口并使其聚焦(
-a
)。

如果您想继续执行why put
exit
?表示循环将在条件不匹配时终止。按not t t时退出。这是一个简化的示例,但实际接口只有5个键(pt56k),因此如果它读取任何其他内容,我希望它退出,因为这表示严重的硬件故障。