Заставьте wmctrl игнорировать окна, отличные от текущего рабочего пространства

Я очень полагаюсь на wmctrl для переключения между окнами, в основном, чтобы избежать многократного ввода alt-tab. Я всегда использовал одно рабочее пространство, но теперь я хочу начать использовать более одного.

Мне было интересно, можно ли изменить контекст wmctrl, чтобы при вводе wmctrl -l отображались только окна из текущего рабочего пространства, а не все окна из всех рабочих пространств.

Например, при условии, что у меня открыто окно Firefox в рабочей области 1. У меня есть комбинация клавиш на ctrl+alt+f, которая выполняет wmctrl -a firefox, которая переключается на Firefox. Если я открою новое окно Firefox в рабочей области 2 и наберу ctrl+alt+f, оно переключится на окно в рабочей области 1, что мне не нужно.

Любые предложения / идеи о том, как решить эту проблему?

РЕДАКТИРОВАТЬ : я использую compiz (Unity)

5
задан 2 October 2012 в 00:01

1 ответ

Если вы используете Compiz (запустите wmctrl -m, если не уверены), wmctrl видит только 1 рабочий стол (2-е поле wmctrl -l, т.е. 0), но вы можете использовать опцию geometry (-G), чтобы узнать, какое окно есть на каком виртуальном десктопе. Все окна на вашем текущем рабочем столе будут иметь х-позицию между 0 и шириной вашего экрана. То же самое для y-позиции между 0 и высотой вашего экрана. Таким образом, вы можете использовать что-то подобное

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

Вы можете жестко указать ширину и высоту экрана, если хотите, и ИМЯ, если вы хотите использовать одну строку. Я не уверен, как вы хотите обрабатывать несколько окон, соответствующих NAME. Это сфокусирует их всех.

Для метасити число окон рабочего стола можно найти, используя wmctrl -l и добавив второе поле.

0
ответ дан 2 October 2012 в 00:01

Другие вопросы по тегам:

Похожие вопросы: