我有一个bash脚本,我想在其中向用户显示图像.使用ImageMagick的显示可以实现这一点.
display image.png
但现在终端窗口的焦点丢失了,并被放置在图像上.要继续我的bash脚本,我必须要求用户在继续之前单击终端.这是不受欢迎的行为.
有没有办法显示图像而不会失去我的bash终端的焦点?我想让它在Ubuntu Linux(12.04)上运行.
解决方法:
wmctrl -T master$$-r :ACTIVE: ; display image.png & sleep 0.1 ; wmctrl -a master$$
为了解释,我将其分解为几个步骤:
> wmctrl -T master $$-r:ACTIVE:
要控制窗口,wmctrl需要知道它的名称,默认情况下它是窗口标题.因此,此步骤将当前窗口分配给唯一名称master $$,其中shell将$$展开为进程ID号.您可能想要选择其他名称.
> display image.png&
此步骤将您的图像显示为“后台”过程.图像窗口将抓住焦点.
>睡眠0.1
我们需要等待足够的时间来显示它的窗口.
> wmctrl -a master $$
现在,我们从显示屏上抓回焦点.如果在步骤1中为主窗口选择了其他名称,请在此处使用该名称代替master $$.
如果系统上未安装wmctrl,则需要安装它.在类似debian的系统上,运行:
apt-get install wmctrl
wmctrl支持Enlightenment,icewm,kwin,Metacity,sawfish和所有其他EWMH / NetWM兼容的X-window管理器.
首先,获取当前窗口的ID:
my_id=$(wmctrl -l -p | awk -v pid=$PPID '$3 == pid {print $1}')
我们现在可以使用此ID代替窗口标题.要在当前窗口中保持焦点的同时启动显示:
display image.png & sleep 0.1 ; wmctrl -i -a "$my_id"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。