GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Faire en sorte que Wmctrl ignore les fenêtres de l'espace de travail autre que l'actuel ?

Je compte beaucoup sur wmctrl pour basculer entre les fenêtres, essentiellement pour éviter de taper alt-tab plusieurs fois. J'ai toujours utilisé un espace de travail, mais maintenant je veux commencer à en utiliser plusieurs.

Je me demandais s'il était possible de modifier le contexte de wmctrl pour que lorsque je tape wmctrl -l , seules les fenêtres de l'espace de travail actuel sont affichées, au lieu de toutes les fenêtres de tous les espaces de travail.

Par exemple, en supposant que j'ai une fenêtre Firefox ouverte dans l'espace de travail 1. J'ai un raccourci clavier sur ctrl+alt+f qui exécute wmctrl -a firefox , qui passe à Firefox. Si j'ouvre une nouvelle fenêtre Firefox sur l'espace de travail 2 et que je tape ctrl+alt+f , il passera à la fenêtre de l'espace de travail 1, ce qui n'est pas ce que je veux.

Des suggestions/idées pour résoudre ce problème ?

MODIFIER :J'utilise compiz (Unity)

Réponse acceptée :

Si vous utilisez Compiz (exécutez wmctrl -m si vous n'êtes pas sûr), wmctrl ne voit qu'un seul bureau (2e champ de wmctrl -l, c'est-à-dire 0) mais vous pouvez utiliser l'option géométrique (-G) pour savoir quelle fenêtre se trouve sur quel bureau virtuel. Toutes les fenêtres de votre bureau actuel auront une position x entre 0 et la largeur de votre écran. Idem pour la position y entre 0 et la hauteur de votre écran.
Vous pouvez donc utiliser quelque chose comme ça

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

Vous pouvez coder en dur la largeur et la hauteur de votre écran si vous le souhaitez, et NAME si vous voulez un one-liner.
Je ne sais pas comment vous voulez gérer plusieurs fenêtres correspondant à NAME. Cela les concentrera tous.

Pour la métacité, le nombre de fenêtres du bureau peut être trouvé en utilisant wmctrl -l et grepping le 2ème champ.


Ubuntu
  1. Comment faire pour qu'un montage Cifs/smb ignore Umask ?

  2. Comment faire en sorte qu'Ibus n'ignore pas ~/.xcompose ?

  3. Comment faire d'un Lenovo Ideapad Z510 un double démarrage ?

  4. Commande Make pour Windows - options possibles ?

  5. Comment créer un package de test Travis CI pour Linux, OS X, Windows ?

Faire en sorte que Plasma ressemble au guide Windows 10

Faire ressembler Linux à Windows - édition 2021

Comment faire ressembler Ubuntu 20.04 LTS à Windows 10 ou 7

Comment faire ressembler Ubuntu à Windows 10 ou 7

Est-il possible de faire en sorte que Indicator-appmenu ignore une application spécifique ?

Comment rendre un fichier texte créé dans Ubuntu compatible avec le bloc-notes Windows ?