Mi affido molto a wmctrl per passare da una finestra all'altra, in pratica per evitare di digitare alt-tab molte volte. Ho sempre utilizzato uno spazio di lavoro, ma ora voglio iniziare a utilizzarne più di uno.
Mi chiedevo se è possibile modificare il contesto di wmctrl in modo che quando digito wmctrl -l
, vengono visualizzate solo le finestre dell'area di lavoro corrente, anziché tutte le finestre di tutte le aree di lavoro.
Ad esempio, supponendo di avere una finestra di Firefox aperta nell'area di lavoro 1. Ho una scorciatoia da tastiera su ctrl+alt+f
che esegue wmctrl -a firefox
, che passa a Firefox. Se apro una nuova finestra di Firefox nell'area di lavoro 2 e digito ctrl+alt+f
, passerà alla finestra nell'area di lavoro 1, che non è quello che voglio.
Qualche suggerimento/idea su come risolverlo?
MODIFICA :Sto usando compiz (Unity)
Risposta accettata:
Se stai usando Compiz (esegui wmctrl -m
se non è sicuro), wmctrl vede solo 1 desktop (2° campo di wmctrl -l, cioè 0) ma puoi usare l'opzione della geometria (-G) per sapere quale finestra si trova su quale desktop virtuale. Tutte le finestre del desktop corrente avranno una posizione x compresa tra 0 e la larghezza dello schermo. Lo stesso vale per la posizione y tra 0 e l'altezza dello schermo.
Quindi puoi usare qualcosa del genere
#!/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
Puoi codificare la larghezza e l'altezza del tuo schermo, se lo desideri, e NAME se desideri una sola riga.
Non sono sicuro di come vuoi gestire più finestre corrispondenti a NAME. Questo li concentrerà tutti.
Per metacity, il numero di finestre del desktop può essere trovato usando wmctrl -l
e grepping il 2° campo.