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

11

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 todas as viewports?

Não quero alterar 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 Unity.

Kadir
fonte
Por ponto de vista, você quer dizer Área de trabalho?
Tim
2
@ Tim ver askubuntu.com/questions/44102/...
Jacob Vlijm

Respostas:

7

Inspirado pela resposta de Pineau, encontrei um truque sujo para fazer isso: mantenha Alt+ `para alternar entre janelas de aplicativos em uma janela de exibição e (por exemplo) Alt+ 1para alternar entre janelas de aplicativos em todas as janelas de exibição.

A menor desvantagem estética é que a capacidade de resposta é um pouco menos precisa, pois as configurações precisam de uma fração de segundo para mudar. Na prática, no entanto, você dificilmente notará.

  1. instalar xdotool:

    sudo apt-get install xdotool
    
  2. Copie o seguinte texto 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. definir uma combinação de teclas para executar o script: System Preferences > Keyboard > Shortcuts > Custom Shortcuts. Eu escolho Alt+ 1, pois é próximo ao outro.

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

    insira a descrição da imagem aqui

    ou Alt+ `para alternar entre janelas do gedit apenas da área de trabalho currect:

    insira a descrição da imagem aqui

Nota:

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

    xdotool keydown alt key 0x60
    
  2. Os valores de sleep 0.2e sleep 1fazem com que o script funcione bem no meu sistema, mas podem estar sujeitos à 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, 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+ Qpara isso, terá um bom conjunto de todas as opções:

Alt+ ` Alternar entre as janelas do aplicativo atual na viewport atual

Alt+ 1 Alternar entre as janelas do aplicativo atual em todas as janelas de exibição

Alt+ Tab Alternar entre todas as janelas de aplicativos na viewport atual

Alt+ Q Alterne entre todas as janelas de aplicativos em todas as janelas de exibição

insira a descrição da imagem aqui

Alt+ Tab: Alterna entre todas as janelas de aplicativos na viewport atual

insira a descrição da imagem aqui

Alt+ Q: Alterna entre todas as janelas de aplicativos em todas as janelas de exibição

Jacob Vlijm
fonte
5

Solução genérica usando wmctrl


Visão geral

O script a seguir deve ser compatível com todos os gerenciadores de janelas compatíveis com EWMH (por exemplo, xfwm4, openbox, kwin, compiz ...). Ele usa wmctrle xprop, que pode ser instalado 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 em qualquer lugar que desejar (de preferência no seu PATH, por exemplo, /usr/local/binou ~/bin).

Uso

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

  • -g: mudança global de janela (em todos os espaços de trabalho)
  • -l: mudança de janela local (área de trabalho atual); pode não funcionar com o Unity / Compiz (consulte a seção de comentários para obter mais informações)
Glutanimado
fonte
Caro @Glutanimate, depois -ltambém muda para janelas em outros espaços de trabalho.
Kadir
@Kadir Isso é estranho. Não está no meu sistema. Se você tiver algum tempo, gostaria de postar a saída wmctrl -xlem um site como pastebin.com e vinculá-lo aqui?
precisa saber é o seguinte
Caro @Glutanimate, aqui está: pastebin.com/iJBAZ5a7
Kadir
@Kadir Thanks! Parece que o Unity / Compiz não está expondo as informações da área de trabalho corretamente, portanto o wmctrl tem problemas para buscá-las (é por isso que você vê apenas zeros na segunda coluna, esses devem ser os números da área de trabalho). Não faço ideia se isso é um bug ou se foi projetado dessa maneira. Não percebi isso porque estava usando o LXDE. Vou adicionar uma nota à resposta.
Glutanimado
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 Unity Tweak Tool:

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

Ative a opção Alternar entre janelas em todos os espaços de trabalho na guia Alternador:

insira a descrição da imagem aqui

Sylvain Pineau
fonte
Eu quero preservar a propriedade Alt-`, que está alternando entre as janelas de um aplicativo na viewport atual. Preciso de outro atalho como Ctrl-Alt-`, que alternará entre as janelas de um aplicativo em todas as viewports.
Kadir
1
@ Kadir Infelizmente, a propriedade dconf não permitirá que ambas as configurações coexistam. É um comportamento ou outro.
precisa saber é o seguinte