Confío mucho en wmctrl para cambiar entre ventanas, básicamente para evitar escribir alt-tab muchas veces. Siempre he usado un espacio de trabajo, pero ahora quiero comenzar a usar más de uno.
Me preguntaba si es posible modificar el contexto de wmctrl para que cuando escriba wmctrl -l
, solo se muestran las ventanas del espacio de trabajo actual, en lugar de todas las ventanas de todos los espacios de trabajo.
Por ejemplo, suponiendo que tengo una ventana de Firefox abierta en el espacio de trabajo 1. Tengo un atajo de teclado en ctrl+alt+f
que ejecuta wmctrl -a firefox
, que cambia a Firefox. Si abro una nueva ventana de Firefox en el espacio de trabajo 2 y escribo ctrl+alt+f
, cambiará a la ventana del espacio de trabajo 1, que no es lo que quiero.
¿Alguna sugerencia/idea sobre cómo solucionar esto?
EDITAR :estoy usando compiz (Unity)
Respuesta aceptada:
Si está utilizando Compiz (ejecute wmctrl -m
si no está seguro), wmctrl solo ve 1 escritorio (segundo campo de wmctrl -l, es decir, 0) pero puede usar la opción de geometría (-G) para saber qué ventana está en qué escritorio virtual. Todas las ventanas de su escritorio actual tendrán una posición x entre 0 y el ancho de su pantalla. Lo mismo para la posición y entre 0 y la altura de la pantalla.
Así que puedes usar algo así
#!/bin/bash
SCREEN_W=$(xwininfo -root | sed -n 's/^ Width: (.*)$/1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^ Height: (.*)$/1/p')
NAME='Navigator.Firefox'
wmctrl -xlG | awk -v W="$SCREEN_W" -v H="$SCREEN_H" -v NAME="$NAME" '$7==NAME && $3>=0 && $3<W && $4>=0 && $4<H {print $1}' | while read WINS; do wmctrl -ia "$WINS"; done
exit 0
Puede codificar el ancho y el alto de su pantalla si lo desea, y NOMBRE si desea una sola línea.
No estoy seguro de cómo desea manejar varias ventanas que coincidan con NOMBRE. Eso los enfocará a todos.
Para metacity, el número de ventanas del escritorio se puede encontrar usando wmctrl -l
y grepping el segundo campo.