Combinação de teclas para alternar entre as janelas de um aplicativo em todas as viewports

10

Alt - ' é usado para alternar entre as janelas de um aplicativo na viewport atual no Unity.

Existe outra combinação de teclas para alternar entre as janelas de um aplicativo em todos os viewports?

Eu não quero mudar o comportamento padrão de Alt - ', que está alternando entre as janelas de um aplicativo na viewport atual.

Estou usando o Ubuntu 14.04 e o Unity.

    
por Kadir 28.08.2014 / 09:58

3 respostas

6

Inspirado na resposta de Pineau, encontrei um truque sujo para fazê-lo: manter Alt + ' para alternar entre janelas de aplicativos em uma viewport e (por exemplo) Alt + 1 para alternar entre janelas de aplicativos em todas as viewports.

Menor desvantagem cosmética é que a capacidade de resposta é um pouco menos precisa, já que as configurações precisam de uma fração de segundo para serem alteradas. Na prática, no entanto, você dificilmente notará.

  1. instale xdotool :

    sudo apt-get install xdotool
    
  2. Copie o seguinte scipt em um arquivo vazio e salve-o como 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. defina uma combinação de teclas para executar o script: System Preferences > Keyboard > Shortcuts > Custom Shortcuts . Eu escolho Alt + 1 , pois está próximo do outro.

    Agora você pode usar Alt + 1 para alternar entre todas as janelas de (por exemplo) gedit:

    ouAlt+'paraalternarentrejanelasdegeditsomentedaáreadetrabalhodaáreadetrabalho:

nota:

  1. No script, a chave acima da aba é definida como key 0x60 . Isso pode ser diferente em outros lauyouts. Caso isso não funcione, execute em um terminal xev , depois pressione Return , depois a tecla acima. Na saída, procure uma string como (keysym 0x60, grave) . O valor de keysym é o valor que você precisa na linha (script):

    xdotool keydown alt key 0x60
    
  2. Os valores de sleep 0.2 e sleep 1 fazem o script funcionar bem no meu sistema, mas podem estar sujeitos a otimização para sistemas mais rápidos (reduzir).

Mais opções

Da mesma forma, você pode definir uma combinação de teclas para alternar entre todas as janelas de aplicativos em todas as viewports em que o script seria:

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

Se você definir por exemplo Alt + Q para isso, você tem um bom conjunto de todas as opções:

Alt + ' Alterna entre as janelas do aplicativo atual na viewport atual

Alt + 1 Alterna entre as janelas do aplicativo atual em todas as viewports

Alt + Separador Alterna entre as janelas todas as aplicações no viewport atual

Alt + Q Alterna entre janelas todas as aplicações em todas as viewports

Alt+Guia:Alternaentretodasasjanelasdeaplicativosnaviewportatual

Alt + Q : Alterna entre todas as janelas de aplicativos em todas as viewports

    
por Jacob Vlijm 29.08.2014 / 17:09
4

Abra um Terminal e digite o seguinte comando:

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

Como alternativa, você pode instalar a ferramenta Unity Tweak:

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

Em seguida, ative a opção Alternar entre janelas em todas as áreas de trabalho na guia Alternador:

    
por Sylvain Pineau 28.08.2014 / 11:06
4

Solução genérica usando wmctrl

Visão geral

O script a seguir deve ser compatível com todos os gerenciadores de janela compatíveis com o EWMH (por exemplo, xfwm4, openbox, kwin, compiz. ..). Ele usa wmctrl e xprop , que podem ser instalados com:

sudo apt-get install x11-utils wmctrl

Instalação

Copie e salve a seguinte passagem como 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: <desktop number> <window class>
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"

Marque o script como executável e salve-o onde desejar (de preferência em seu PATH, por exemplo, /usr/local/bin ou ~/bin ).

Uso

Use o menu de atalhos de teclado do gerenciador de janelas para atribuir simple-window-switcher a uma tecla de atalho de sua escolha. Você pode usar os seguintes parâmetros para controlar como o script se comporta:

  • -g : troca de janela global (em todos os espaços de trabalho)
  • -l : troca de janela local (espaço de trabalho atual); pode não funcionar com Unity / Compiz (veja a seção de comentários para mais informações)
por Glutanimate 30.08.2014 / 02:47