7 votes

Comment puis-je lier une touche pour passer d'un espace de travail à un autre ?

J'utilise actuellement deux espaces de travail et j'aimerais pouvoir les parcourir en utilisant un seul raccourci. Pour l'instant, je peux faire Ctrl + Alt + Right pour passer à l'espace de travail 2, et Left passe à 1, mais j'aimerais qu'une seule touche (ou combinaison de touches) permette de passer à l'espace de travail dans lequel je ne me trouve pas actuellement. De cette façon, je n'aurais besoin que de ce raccourci, et non de deux.

J'utilise Ubuntu sur une vieille machine, et cela m'empêche d'activer compiz. J'ai essayé d'écrire un script en utilisant à la fois wmctrl y xdotool mais aucun des deux ne fonctionne correctement (quoi que je fasse, ils ne passent que dans l'espace de travail 1, et jamais dans le 2).

Des suggestions ?

5voto

Schof Points 952

Voici un script qui passe à l'espace de travail suivant, en revenant au premier après le dernier. Notez que les espaces de travail sont numérotés à partir de 0. C'est peut-être ce qui vous a déconcerté lorsque vous avez essayé d'écrire un script.

#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*/\1/p')
if [ -z "$total" ] || [ -z "$current" ]; then
  echo 1>&2 "$0: Could not obtain workspace information!"
  exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
  target=0
fi
wmctrl -s $target

2voto

Paul de Vrieze Points 3715

Je sais que c'est vieux mais voici mes versions :

Pour les espaces de travail multiples (comme dans la réponse de Gilles) :

wmctrl -s `wmctrl -d | awk '$2=="*"{cur=NR} END{print cur % NR}'`

Pour les fenêtres multiples :

wmctrl -o `wmctrl -d | awk '{gsub(/[^0-9]/," ",$0);x = ($4 + $6 + $8) % $2; if( 
x == 0 ) y = ($5 + $7 + $9) % $3; else y = $5; print x","y}'`

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X