用于在所有视口中的应用程序窗口之间切换的组合键

Alt`用于在Unity中当前视口中的应用程序窗口之间切换。

是否有另一个组合键在所有视口中的应用程序窗口之间切换?

我不想更改Alt`的默认行为,它在当前视口中的应用程序窗口之间切换。

我正在使用Ubuntu 14.04和Unity。

受Pineau的回答启发,我找到了一个完成它的肮脏技巧:保持Alt + `在一个视口中的应用程序窗口之间切换,以及(例如) Alt + 1在所有视口上的应用程序窗口之间切换。

轻微的化妆品缺点是响应性稍微不准确,因为设置需要几分之一秒才能改变。 然而,在实践中,你几乎不会注意到。

  1. 安装xdotool

     sudo apt-get install xdotool 
  2. 将以下scipt复制到空文件中并将其另存为switch.sh

     #!/bin/bash dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false sleep 0.2 xdotool keydown alt key 0x60 dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true sleep 1 
  3. 设置组合键以运行脚本: System Preferences > Keyboard > Shortcuts > Custom Shortcuts 。 我选择Alt + 1 ,因为它接近另一个。

    现在您可以使用Alt + 1在(例如)gedit的所有窗口之间切换:

    在此处输入图像描述

    Alt + `在仅当前工作区的gedit窗口之间切换:

    在此处输入图像描述

注意:

  1. 在脚本中, Tab上方的设置为key 0x60 。 这可能与其他lauyouts不同。 如果它不起作用,在终端xev运行,然后按Return键,然后按Tab键上方的键。 在输出中,查找像(keysym 0x60, grave)这样的字符串。 keysym值是(script-)行中您需要的值:

     xdotool keydown alt key 0x60 
  2. sleep 0.2sleep 1的值使得脚本在我的系统上正常工作,但它们可能需要针对更快的系统进行优化(减少)。

更多的选择

同样,您可以设置一个组合键,在脚本所有视口上的所有应用程序窗口之间切换:

 #!/bin/bash dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false sleep 0.2 xdotool keydown alt key 0xff09 dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true sleep 1 

如果为此设置Alt + Q ,则可以使用所有选项:

Alt + `当前视口的 当前应用程序窗口之间切换

Alt + 1所有视口上的当前应用程序窗口之间切换

Alt + Tab当前视口上的所有应用程序窗口之间切换

Alt + Q所有视口上的所有 应用程序窗口之间切换

在此处输入图像描述

Alt + Tab :在当前视口上的所有应用程序窗口之间切换

在此处输入图像描述

Alt + Q :在所有视口上的所有应用程序窗口之间切换

打开终端并键入以下命令:

 dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false 

或者,您可以安装Unity Tweak Tool:

 sudo apt-get install unity-tweak-tool unity-tweak-tool 

然后在“切换器”选项卡中启用“ 在所有工作区上的窗口之间切换”选项:

在此处输入图像描述

使用wmctrl通用解决方案


概观

以下脚本应与所有符合EWMH的窗口管理器兼容 (例如xfwm4,openbox,kwin,compiz …)。 它使用wmctrlxprop ,可以安装:

 sudo apt-get install x11-utils wmctrl 

安装

将以下段落复制并保存为simple-window-switcher

 #!/bin/bash # based on a script by Robert Steiniger # (http://lars.st0ne.at/blog/switch%20between%20windows%20within%20the%20same%20application) Usage=" Title: simple-window-switcher 0.1 Description: switch between all windows of active application Author: Copyright Glutanimate 2014 (https://github.com/Glutanimate) License: GNU GPLv3 Usage: $(basename "$0") [-g|-l|-h] -g: global window switching (across all workspaces) -l: local window switching (current workspace) -h: display this help message If no argument is provided window switching will be set to global. " while getopts "lgh" OPTIONS; do case $OPTIONS in l ) Fields="3-4" ;; g ) Fields="4" ;; h ) echo "$Usage" exit 0 ;; \? ) echo "$Usage" exit 1 ;; esac done ActiveWinID="$(xprop -root | sed -n 's/_NET_ACTIVE_WINDOW(WINDOW): window id # 0x//p')" # fields 3-4:   ActiveWinClass="$(wmctrl -xl | grep "$ActiveWinID" | cut -d" " -f${Fields})" WindowList="$(wmctrl -xl | grep "$ActiveWinClass" | cut -d" " -f1)" NextWindow="$(echo "$WindowList" | grep -A1 "$ActiveWinID" | sed -n 2p)" if [[ -z "$NextWindow" ]]; then NextWindow="$(echo $WindowList | head -n 1)" fi wmctrl -i -a "$NextWindow" 

将脚本标记为可执行文件并将其保存在任何位置(最好在PATH中,例如/usr/local/bin~/bin )。

用法

使用窗口管理器的键盘快捷键菜单将simple-window-switcher分配给您选择的热键。 您可以使用以下参数来控制脚本的行为方式:

  • -g :全局窗口切换(跨所有工作区)
  • -l :本地窗口切换(当前工作空间); 可能无法与Unity / Compiz一起使用(有关详细信息,请参阅注释部分)