GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Fare in modo che Wmctrl ignori le finestre dell'area di lavoro diversa da quella corrente?

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.


Ubuntu
  1. Come creare un server Minecraft con Hostinger, Ubuntu, Windows e macOS

  2. Come fare in modo che un supporto Cifs/smb ignori Umask?

  3. Come utilizzare Unetbootin per creare un programma di installazione USB avviabile di Windows?

  4. Come realizzare un Lenovo Ideapad Z510 come dual boot?

  5. Come creare un pacchetto di test Travis CI per Linux, OS X, Windows?

Rendi Plasma simile alla guida di Windows 10

Rendi Linux simile a Windows - Edizione 2021

Come rendere Ubuntu 20.04 LTS simile a Windows 10 o 7

Come far sembrare Ubuntu come Windows 10 o 7

È possibile fare in modo che Indicator-appmenu ignori un'applicazione specifica?

Come rendere compatibile il file di testo creato in Ubuntu con il blocco note di Windows?