web-dev-qa-db-fra.com

Existe-t-il une commande permettant d'accéder à un espace de travail spécifique?

J'essaie de créer une liste rapide sur le lanceur Workspace Switcher qui permet de basculer rapidement vers un certain espace de travail. (Mon ami utilise parfois mon ordinateur et n'apprécie pas les raccourcis clavier, alors je veux l'aider.)

Alors, y a-t-il une commande que l'on pourrait taper dans un terminal qui forcerait un certain espace de travail à se concentrer?

21
Leron

Vous pouvez utiliser wmctrl .

Commandes de base:
wmctrl -d pour afficher tous vos espaces de travail.
wmctrl -s <workspace_name> pour passer à un espace de travail spécifique.

Si vous utilisez Compiz, vous devrez faire une astuce car les "espaces de travail" Compiz sont en fait des fenêtres d'affichage d'un seul espace de travail.

Trick Instructions

Vérifiez la sortie de wmctrl -d Par exemple, le mien est:

0  * DG: 4098x2304  VP: 1366,0  WA: 0,23 1366x745  N/A  

Cela signifie qu'en fait, j'ai un espace de travail de 4098 x 2304 au lieu de ce que je "pense", je l'ai (neuf "espaces de travail", 3 x 3).
J'étais à ce qui était supposé être un "espace de travail" 2, mais en réalité, j'étais à la fenêtre d'affichage (VP) 1366,0 (4098/3 = 1366), comme le montre la sortie ci-dessus.

Voici comment cela fonctionne: nous prenons tout l’espace de travail et divisons le nombre d’espaces de travail que nous "pensons" avoir. Dans mon cas: 4098/3 = 1366 et 2304/3 = 768.

Si je veux aller à mon "espace de travail" 1, la commande est la suivante:

wmctrl -o 0,0

Ensuite, si je souhaite accéder à mon "espace de travail" 4, la commande est la suivante:

wmctrl -o 0,768

Si je veux aller à mon "espace de travail" 8, la commande est la suivante:

wmctrl -o 1366,1536

Si je veux aller à mon "espace de travail" 9, la commande est la suivante:

wmctrl -o 2732,1536

Je l'ai? ;-)

L'indicateur -o "tronque" leurs valeurs. En d'autres termes, cela modifie "l'espace de travail" auquel le pixel réel appartient. Les éléments suivants sont équivalents:

wmctrl -o 0,0
wmctrl -o 1365,767
33
desgua

Il est très simple de réaliser ce que vous voulez avec xdotool, qui offre de nombreuses options pour gérer différents espaces de travail (également appelés "bureaux" dans la documentation du programme). Je trouve qu'il peut être très intéressant et créatif d'enchaîner les commandes de man xdotool; les commandes que j'ai formulées ci-dessous pourraient être utiles dans les scripts.

Remarque: Avec certains gestionnaires de fenêtres ou si vous utilisez compiz, vous devrez peut-être utiliser des commandes xdotool telles que set_desktop_viewport et get_desktop_viewport. Vous devrez peut-être spécifier les commandes d'une manière différente, comme desgua suggère ci-dessus, mais pour moi, les commandes set_desktop et set_desktop_for_window se sont révélées plus utiles sur un système non compiz.)

( La solution est particulièrement utile pour les utilisateurs de Xubuntu/Lubuntu, ou ceux qui n'exécutent pas Compiz, etc. )

Pour répertorier le nombre d'espaces de travail actuels, entrez

xdotool get_num_desktops

Les commandes suivantes ne fonctionneront que si vous avez au moins 1 autre espace de travail.

Pour changer le focus sur votre espace de travail 1, entrez simplement

xdotool set_desktop 1 

Ensuite, pour revenir à l'espace de travail par défaut, entrez

xdotool set_desktop 0

L'espace de travail doit simplement être spécifié en tant que dernière valeur de la commande (1 ou 2 ou 3, etc.).

Pour trouver le numéro de l'espace de travail sur lequel vous vous trouvez, vous pouvez utiliser

xdotool get_desktop

Ces commandes pourraient être utilisées dans des scripts et elles devraient être très utiles pour obtenir ce que vous voulez.

Pour savoir comment passer d'applications sur un poste de travail particulier, consultez ma réponse ici:

Pour plus d'options utiles disponibles pour le changement d'espace de travail, consultez man xdotool.

8
user76204

J'ai implémenté un script qui fait ce que vous voulez. Le voici: https://github.com/norswap/wmov/blob/master/wmov.sh

Cela fonctionne en effet comme décrit dans le post de Desgua. Il permet également d’envoyer des fenêtres à d’autres espaces de travail.

1
Norswap

Il y a un script appelé compiz-send.py sur le compiz wiki qui répond en partie à votre question: ce n'est pas un espace de travail spécifique mais vous pouvez aller à celui qui est à côté .

Avec cela, vous pouvez émettre une commande
./compiz-dbus-send.py put put_viewport_left_key
./compiz-dbus-send.py put put_viewport_right_key
et faites en sorte que la fenêtre d’affichage soit 1 vers la gauche ou vers la droite.

0
Rinzwind