web-dev-qa-db-fra.com

Comment puis-je lier une clé pour parcourir les espaces de travail?

J'utilise actuellement 2 espaces de travail et j'aimerais pouvoir les parcourir à l'aide d'un seul raccourci. Pour le moment, 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 une combinaison de touches) bascule vers l'espace de travail dans lequel je ne suis pas actuellement. De cette façon, je n’aurais besoin que de ce raccourci, et non de deux.

J'utilise Ubuntu sur une ancienne machine, ce qui m'empêche de permettre la compilation. J'ai essayé d'écrire un script en utilisant à la fois wmctrl et xdotool, mais ni l'un ni l'autre ne fonctionne correctement (quoi que je fasse, ils ne basculeront que vers l'espace de travail 1 et jamais vers 2).

Aucune suggestion?

7
Malabarba

Voici un script qui bascule vers le prochain espace de travail et revient 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 jeté 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
5
Gilles

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

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

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

Pour plusieurs fenêtres:

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}'`
2
palindrom