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

22

J'essaie de créer une liste rapide sur le lanceur du commutateur d'espace de travail qui permet de passer rapidement à un certain espace de travail. (Mon ami utilise parfois mon ordinateur et n'aime tout simplement pas les raccourcis clavier, donc 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?

Leron
la source
Il existe également une possibilité de définir un raccourci clavier sur les paramètres système5 pour kwin (changer de bureau ou autre) ou tout autre gestionnaire de paramètres de bureau. puis utilisez xdotool pour simuler les touches de raccourci comme la touche xdotool ctrl + alt + b;
intika

Réponses:

34

Vous pouvez utiliser wmctrl .

Commandes de base:
wmctrl -dpour 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 un tour car les "espaces de travail" Compiz sont en fait des fenêtres d'un seul espace de travail.

Instructions de tour

Vérifiez la sortie de wmctrl -dPar exemple, la mienne est:

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

Cela signifie que j'ai en fait un espace de travail de 4098 x 2304 au lieu de ce que je "pense" que j'ai (neuf "espaces de travail", 3 x 3).
J'étais à ce qui était censé être un "espace de travail" 2, mais en fait 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 pour le nombre d '"espaces de travail" que nous "pensons" avoir. Dans mon cas: 4098/3 = 1366 et 2304/3 = 768.

Si je veux accéder à mon "espace de travail" 1, la commande est:

wmctrl -o 0,0

Ensuite, si je veux aller dans mon "espace de travail" 4, la commande est:

wmctrl -o 0,768

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

wmctrl -o 1366,1536

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

wmctrl -o 2732,1536

Je l'ai? ;-)

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

wmctrl -o 0,0
wmctrl -o 1365,767
desgua
la source
1
Existe-t-il un moyen d'accéder à "le bureau actuel + 1"?
xjcl
9

Il est magnifiquement simple de réaliser ce que vous voulez, avec xdotoolplusieurs 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 de regrouper des commandes à partir 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 xdotoolcommandes telles que set_desktop_viewportet get_desktop_viewport. Vous devrez peut-être spécifier les commandes d'une manière différente, comme le suggère desgua ci-dessus, mais pour moi, les commandes set_desktopet se sont set_desktop_for_windowavérées les plus utiles sur un système non compiz.)

( La solution est la plus 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é comme 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 actuellement, vous pouvez utiliser

xdotool get_desktop

Ces commandes peuvent être utilisées dans des scripts et devraient être très utiles pour réaliser ce que vous voulez.

Pour savoir comment basculer les applications vers un bureau particulier, consultez ma réponse ici:

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

Communauté
la source
J'aime mieux cette réponse que celle acceptée, merci. J'ai utilisé cela pour définir deux coins chauds pour basculer facilement entre deux espaces de travail.
horaire du
Également utile: passez au bureau suivant vers la gauche / droite en utilisant le drapeau relatif:xdotool set_desktop --relative -- -1
xjcl
1

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 l'article de Desgua. Il a également la capacité d'envoyer des fenêtres à d'autres espaces de travail.

Norswap
la source
1
Remarque: ne fonctionne pas pour le nombre de bureaux virtuels> 9.
j6m8
0

Il y a un script appelé compiz-send.py sur le wiki compiz qui répond en partie à votre question: ce n'est pas un espace de travail spécifique mais vous pouvez accéder à celui à 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 faire passer la fenêtre 1 à gauche ou à droite.

Rinzwind
la source
0

Aller à un espace de travail spécifique et y effectuer des actions peut être implémenté avec Python et la bibliothèque pyautogui , qui permet aux scripts Python d'effectuer des clics de souris, des frappes, etc.

J'ai écrit un court tutoriel sur le forum pour Peppermint OS sur le démarrage d'une application sur un lieu de travail spécifique.

The_Fritz
la source