![使用脚本将所有打开的终端窗口移到前面](https://linux22.com/image/1043063/%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E5%B0%86%E6%89%80%E6%9C%89%E6%89%93%E5%BC%80%E7%9A%84%E7%BB%88%E7%AB%AF%E7%AA%97%E5%8F%A3%E7%A7%BB%E5%88%B0%E5%89%8D%E9%9D%A2.png)
我正在尝试使用建议脚本我之前曾问过这个问题,但是我无法让它发挥作用。
该脚本应该将程序(其名称作为参数传递)的所有实例转发。
以下是脚本的副本:
#!/bin/bash
Program=$@
wmctrl -l | while read Window; do
if [[ "$Window" == *"$Program"* ]]; then
echo "DEBUG: I bring $Window"
code=`echo "$Window" | cut -f 1 -d " "`
wmctrl -i -a $code
fi
done
我在偏好设置中添加了一个键盘快捷键,其命令是:
bash /home/michael/Scripts/bring-all-windows.bash terminal
它对于 gedit 等其他应用程序运行良好,但当我尝试使用终端、终端或 gnome-terminal 时没有得到任何响应。
有人知道为什么会发生这种情况吗?
答案1
问题中的脚本运行完美,但问题在于您的终端窗口标题不包含单词(字符串)“Terminal”。要克服这个“不足”,您有三种可能性:
让你的终端窗口包含单词“terminal”。为此,当你在终端时,转到编辑→个人资料偏好(或按Alt+E然后O),选择头衔和命令选项卡,然后按照下图中的说明进行操作:
正如我所见这个图片,您的终端窗口标题与终端提示符相同。因此,如果您使用以下命令运行脚本,该脚本将按预期工作:
/home/michael/Scripts/bring-all-windows.bash michael@michael
(您不需要在上述命令前面添加
bash
)。或者,也许最好的选择是,在脚本中与窗口标识匹配,而不是与窗口标题匹配:
#!/bin/bash Program=" $(pidof $@) " wmctrl -lp | while read Window; do if [ "${Program/ `echo "$Window" | cut -f 4 -d " "` }" != "$Program" ]; then echo "DEBUG: I bring $Window" code=`echo "$Window" | cut -f 1 -d " "` wmctrl -i -a $code fi done
然后使用以下命令运行脚本:
/home/michael/Scripts/bring-all-windows.bash gnome-terminal