微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 使用终端显示图像而不会失去焦点

我有一个bash脚本,我想在其中向用户显示图像.使用ImageMagick的显示可以实现这一点.

display image.png

但现在终端窗口的焦点丢失了,并被放置在图像上.要继续我的bash脚本,我必须要求用户在继续之前单击终端.这是不受欢迎的行为.

有没有办法显示图像而不会失去我的bash终端的焦点?我想让它在Ubuntu Linux(12.04)上运行.

解决方法:

这是使用wmctrl的一个不太尴尬的解决方案:

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] 举报,一经查实,本站将立刻删除。

相关推荐