如何将一个应用程序的所有窗口置于前台?

有时候我想把一个应用程序的所有窗口都置于顶层。目前在Unity中似乎唯一的方法是逐个切换到每个窗口(可以使用alt-tab、点击启动器图标并选择每个窗口,或者最小化其他所有窗口)。我猜可能可以使用wmctrl来拼凑出一个解决方案,但我希望能找到一个更简单的解决办法。

如果你没有任何答案的话,这是我使用的方法:http://sprunge.us/giih(根据活动窗口进行焦点窗口切换,绑定快捷键),和 http://sprunge.us/MFCE(根据应用程序名称的一部分作为参数调用,例如`fc nau`用于打开Nautilus)。 - user55822
1可能是一个重复的问题,参考如何显示应用程序的所有窗口? - Jacob Vlijm
3个回答

你可以使用wmctrl来实现这个功能:
有一个快捷方式可以适用于所有窗口,比如你只想撤销回到桌面的操作:
wmctrl -k off

如果你真的只需要打开一个特定的应用程序,你可以使用以下脚本,但它会打开所有工作空间上的所有窗口。例如,要打开所有的gnome终端,你可以执行以下操作:
pids=" $(pidof gnome-terminal) "
wmctrl -lp | while read id a pid b; do
  test "${pids/ $pid }" != "$pids" && wmctrl -i -a $id
done

在 @Lajos 出色的回答基础上,进一步改进以适用于任何应用程序:
function showall {
  pids=" $(pidof $1) "
  wmctrl -lp | while read id a pid b
  do test "${pids/ $pid }" != "$pids" && wmctrl -i -a $id; done
}

然后这样称呼它:
showall gnome-terminal
showall nautilus
showall chrome

如果你只需要找到一个应用程序的所有窗口(每个窗口都有内容预览),那么在启动栏中点击应用程序图标两次即可。第一次点击会激活该应用程序的最近窗口,第二次点击会给你预览所有应用程序的窗口。 这并不是技术上的“置顶”,但可能满足你实际的需求(例如查找所有打开的电子邮件窗口)。