如果已经提出要求,请提前道歉 - 搜索bash和终端在很多地方一起出现真的很难。
基本上我希望能够做的是让bash脚本知道它运行的终端当前是否处于活动状态(已选中),以便我可以使用notify-send通知用户仅当它当前不是活动窗口时才完成。我猜想有可能通过某种方式访问gnome来做一些至少可以检测活动窗口是否是终端窗口的东西,但是我不知道怎么样,我想它可能是一个hack,但任何帮助都会是赞赏。
答案 0 :(得分:1)
在进行了一些挖掘之后,我找到了一个可行的解决方案,所以我将把它作为答案发布,但它不是非常便携,所以我仍然感谢任何更好的解决方案。
我发现当使用Gnome时你可以从gnome-terminal访问一个$ WINDOWID变量(如果你不幸地把它变成了另一个盒子,那就不行了,所以不太理想) 。这可以与xprop结合使用:
activeWindow=$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')
thisWindow=$(printf '0x%x\n' $WINDOWID)
然后可以比较哪些是平等的。然而,获得当前窗口id的更合适的方法是好的。
编辑:看过Zaytzev的回答我想这可以合并,所以我可以设置终端标题,检查xprop -id $activeWindow WM_NAME
是否等于我的窗口标题。
答案 1 :(得分:1)
这个问题更像是关于xserver和窗口管理然后bash本身。你需要两件事:
a)找到你的窗口:
$> xprop -root _NET_CLIENT_LIST_STACKING
它输出如下:
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0xe0001e, 0x3a0006d, 0x1a00004
这是窗口堆栈,因此最后一个窗口位于顶部。您需要提取窗口ID列表(0xe0001e 0x3a0006d 0x1a00004)。
接下来,您必须遍历该ID列表。您将通过检查此属性找到您的窗口:
xprop -id <win id> WM_NAME
b)如何提升窗口的示例如下: X11: raise an existing window via command line?