快捷方式将所有打开的端子移到前面


17

导航到网页或编辑器后,是否可以将所有打开的终端恢复到其原始位置?单击终端图标,然后分别将每个图标带回,这有点麻烦。

谢谢!

例:

  • 预捷径:

映像前快捷方式


  • 快捷方式:

图片后快捷方式


1
+1非常有趣的问题,对于不相关的问题,您可能会发现此答案很有用-如果没有现有的GUI工具,那么devilspie程序可能与此问题相关。
evilsoup

对于存档:gist.github.com/psi-4ward/18c3a596d28a3cfa772101af755545df尊重最近使用的应用程序的脚本
Psi

Answers:


9

您可以按Alt+ TabWindows和Linux之间进开关Alt+ Shift+ Tab切换回窗口之间。该快捷方式适用于几乎所有图形操作系统。您还可以出于相同目的使用Super+ W和箭头键。

将一个终端窗口置于最前面之后,按Alt+ ~将所有其他终端窗口一一置于最前面:

切换到Windows


要自动将所有打开的终端显示在前面(不是我之前描述的一个一个),您需要为以下脚本添加键盘快捷键(脚本取自Adobe答案,并考虑到该脚本的版本不起作用而进行了改进为了我):

#!/bin/bash

if [ $# -ne 1 ];then
  echo -e "Usage: `basename $0` PROGRAM_NAME\n
           For example:\n\t
           '`basename $0` gnome-terminal' for Terminal\n\t
           '`basename $0` firefox' for Firefox\n\t
           '`basename $0` chromium-browser' for Chromium\n\t..."
  exit 1
fi

pids=" $(pidof $@) "

if [ "$pids" = "  " ]; then # the string "  " contain two spaces
    echo "There is no program named '$@' opened at the moment."
    exit 1
fi

wmctrl -lp | while read identity desktop_number PID window_title; do 
    if [ "${pids/ $PID }" != "$pids" ]; then
        wmctrl -ia $identity
    fi
done

不要忘记使脚本可执行:

chmod +x /path/to/script/script_name

在终端中测试脚本之后,必须看到:


3
谢谢,但实际上与单击终端图标并选择每个要显示在前面的图标相同。我的意思是将所有打开的端子置于前端的捷径。一个例子是我可能正在用gedit编写代码,想在一个终端中编译它,同时在另一个终端中查看日志的输出。
TomSelleck

“屏幕截图将在1秒钟内拍摄”……嗯,有人在这里撒谎了……
CarlosCampderrós13

1
@Tomcelic参见我的新编辑。要说我在Adobe发布他的“ 如何回答”(对我而言是无效的)时正在使用这样的脚本,所以请不要以错误的方式处理此问题。
RaduRădeanu13年

8

这是一个小的bash脚本,它将标题与ARG匹配的所有窗口置于最前面:

bring-all-windows.bash ARG

剧本:

#!/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

你可以绑定

bring-all-windows.bash Terminal

到热键(不要忘记将脚本放入登录shell PATH或为其编写完整路径)。

该脚本需要wmctrl安装。

编辑

要从终端运行某些内容,请导航至放置脚本的目录,然后

chmod +x bring-all-windows.bash
./bring-all-windows.bash Terminal

当您确定它可以在终端上正常工作时,请尝试将其绑定到热键,以提供完整路径。当您确定它与热键以及脚本的完整路径一起使用时,请尝试将其目录添加到登录Shell PATH中,然后查看它是否可以那样工作。


听起来不错!我会尽快尝试一下,并尽快回复您。关于为什么没有本机方法,我还是有些困惑,似乎应该是自然的。
TomSelleck 2013年

@Tomcelic:有一个wmctrland bash:很自然。
Adobe

是的,但这不是本地的:P
TomSelleck

您是否有可能介意如何使用此脚本?我已经创建了脚本并将其保存在主文件夹中,并将其路径添加到/ etc / shells中。我还在键盘设置中添加了一个快捷方式,名称为Bring_terminals_forward,命令为bash /home/michael/Scripts/bring-all-windows.bash终端
TomSelleck 2013年

从运行中的终端直接运行脚本似乎也不起作用……它适用于gedit之类的程序,但不适用于终端
TomSelleck

0

另一种方法是使用xdotool。您应该先安装它,这sudo apt-get install xdotool是强制性的。

xdotool search --class "terminal" windowactivate %@
xdotool search --name "braiam@bt" windowactivate %@

第一个查找任何称为*terminal*的二进制文件,第二个查找具有标题的任何窗口*braiam@bt*。然后,如果将其放入bash脚本中:

#!/bin/bash

set -e
program=$@

xdotool search --class '$program' windowactivate %@
xdotool search --name '$program' windowactivate %@

您可以在xdotool手册中了解更多信息。


0

在Ubuntu桌面上以图形方式显示,我的图标垂直排列在桌面的左侧边缘。如果左键单击终端图标,您将看到所有终端窗口。然后,您可以选择要使用的任何一个。如果右键单击终端图标,您将看到菜单列表,顶部带有“新终端”,所有打开的终端在列表的下部。您可以选择任何一个作为您的活动终端。

相同的方法应适用于任何其他应用程序,例如您的浏览器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.