Combinación de teclas para cambiar entre las ventanas de una aplicación en todas las ventanas gráficas

11

Alt- `se utiliza para cambiar entre las ventanas de una aplicación en la ventana gráfica actual en Unity.

¿Hay otra combinación de teclas para cambiar entre las ventanas de una aplicación en todas las ventanas gráficas?

No quiero cambiar el comportamiento predeterminado de Alt- `, que es cambiar entre las ventanas de una aplicación en la ventana gráfica actual.

Estoy usando Ubuntu 14.04 y Unity.

Kadir
fuente
Por punto de vista, ¿te refieres a Workspace?
Tim
2
@Tim ver askubuntu.com/questions/44102/…
Jacob Vlijm

Respuestas:

7

Inspirado por la respuesta de Pineau, encontré un truco sucio para hacerlo: mantener Alt+ `para cambiar entre ventanas de aplicaciones en una ventana gráfica y (por ejemplo) Alt+ 1para cambiar entre ventanas de aplicaciones en todas las ventanas gráficas.

La desventaja cosmética menor es que la capacidad de respuesta es un poco menos precisa, ya que la configuración necesita una fracción de segundo para cambiar. En la práctica, sin embargo, apenas lo notará.

  1. instalar xdotool:

    sudo apt-get install xdotool
    
  2. Copie el siguiente scipt en un archivo vacío y guárdelo 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. establecer una combinación de teclas para ejecutar el script: System Preferences > Keyboard > Shortcuts > Custom Shortcuts. Elijo Alt+ 1, ya que está cerca del otro.

    Ahora puede usar Alt+ 1para cambiar entre todas las ventanas de (por ejemplo) gedit:

    ingrese la descripción de la imagen aquí

    o Alt+ `para cambiar entre ventanas gedit de solo el espacio de trabajo correcto:

    ingrese la descripción de la imagen aquí

Nota:

  1. En el script, la clave sobre el Tabse establece en key 0x60. Esto podría ser diferente en otros lauyouts. En caso de que no funcione, ejecute en una terminal xev, luego presione Return, luego la tecla encima de la pestaña. En la salida, busque una cadena como (keysym 0x60, grave). El valor de keyym es el valor que necesita en la línea (script):

    xdotool keydown alt key 0x60
    
  2. Los valores de sleep 0.2y sleep 1hacen que el script funcione bien en mi sistema, pero pueden estar sujetos a optimización para sistemas más rápidos (reducir).

Mas opciones

Del mismo modo, puede establecer una combinación de teclas para cambiar entre todas las ventanas de la aplicación en todas las ventanas gráficas, el script sería:

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

Si configura, por ejemplo, Alt+ Qpara esto, tiene un buen conjunto de todas las opciones:

Alt+ ` Cambiar entre las ventanas de la aplicación actual en la ventana gráfica actual

Alt+ 1 Cambiar entre las ventanas de la aplicación actual en todas las ventanas gráficas

Alt+ Tab Cambiar entre todas las ventanas de la aplicación en la ventana gráfica actual

Alt+ Q Cambiar entre todas las ventanas de la aplicación en todas las ventanas gráficas

ingrese la descripción de la imagen aquí

Alt+ Tab: Cambiar entre todas las ventanas de la aplicación en la ventana gráfica actual

ingrese la descripción de la imagen aquí

Alt+ Q: Cambiar entre todas las ventanas de la aplicación en todas las ventanas gráficas

Jacob Vlijm
fuente
5

Solución genérica utilizando wmctrl


Visión general

El siguiente script debe ser compatible con todos los gestores de ventanas compatibles con EWMH (por ejemplo, xfwm4, openbox, kwin, compiz ...). Utiliza wmctrly xprop, que se puede instalar con:

sudo apt-get install x11-utils wmctrl

Instalación

Copie y guarde el siguiente pasaje 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 el script como ejecutable y guárdelo en cualquier lugar que desee (preferiblemente en su RUTA, por ejemplo, /usr/local/bino ~/bin).

Uso

Use el menú de atajos de teclado de su administrador de ventanas para asignar simple-window-switcheruna tecla de acceso rápido de su elección. Puede usar los siguientes parámetros para controlar cómo se comporta el script:

  • -g: cambio de ventana global (en todos los espacios de trabajo)
  • -l: cambio de ventana local (espacio de trabajo actual); podría no funcionar con Unity / Compiz (consulte la sección de comentarios para obtener más información)
Glutanimato
fuente
Estimado @Glutanimate, después -ltambién cambia a Windows en otros espacios de trabajo.
Kadir
@Kadir Eso es extraño. No en mi sistema. Si tiene algo de tiempo, ¿estaría dispuesto a publicar el resultado wmctrl -xlen un sitio como pastebin.com y vincularlo aquí?
Glutanimate
Estimado @Glutanimate, aquí está: pastebin.com/iJBAZ5a7
Kadir
@Kadir Gracias! Parece que Unity / Compiz no está exponiendo la información del espacio de trabajo correctamente, por lo que wmctrl tiene problemas para recuperarla (es por eso que solo ve ceros en la segunda columna, esos deberían ser los números del espacio de trabajo). No tengo idea si eso es un error o si fue diseñado de esa manera. No me di cuenta de esto porque estaba usando LXDE. Agregaré una nota a la respuesta.
Glutanimate
4

Abra una Terminal y escriba el siguiente comando:

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

Alternativamente, puede instalar la herramienta Unity Tweak:

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

Luego habilite la opción Cambiar entre ventanas en todos los espacios de trabajo en la pestaña Switcher:

ingrese la descripción de la imagen aquí

Sylvain Pineau
fuente
Quiero preservar la propiedad Alt-`, que está cambiando entre las ventanas de una aplicación en la ventana gráfica actual. Necesito otro acceso directo como Ctrl-Alt-`, que cambiará entre las ventanas de una aplicación en todas las ventanas gráficas.
Kadir
1
@Kadir Desafortunadamente, la propiedad dconf no permitirá que ambas configuraciones coexistan. Es un comportamiento u otro.
Sylvain Pineau