Réponses:
Grâce à Marco, j'ai trouvé un moyen d'utiliser wmctrl.
Parce que les espaces de travail compiz sont en fait la fenêtre d'un seul bureau, la solution consiste donc à déplacer la fenêtre actuelle pour couvrir la région centrale du bureau.
Tout d'abord, appelez wmctrl -dpour obtenir les informations du bureau actuel:
read desktop_id _ast \
DG_ geometry \
VP_ viewport \
WA_ wa_off wa_size \
title \
< <(LANG=C wmctrl -d | grep '*')
geom_w=${geometry%x*}
geom_h=${geometry#*x}
# The workarea size isn't accurate, because the top/bottom panel is excluded.
viewport_w=${wa_size%x*}
viewport_h=${wa_size#*x}
rows=$((geom_w / viewport_w))
cols=$((geom_h / viewport_h))
# Fix the viewport size
viewport_w=$((geom_w / rows))
viewport_h=$((geom_h / cols))
Ensuite, calculez l'origine de la fenêtre centrale:
center_row=$((rows / 2))
center_col=$((cols / 2))
center_x=$((center_col * viewport_w))
center_y=$((center_row * viewport_h))
center_viewport=$center_x,$center_y
Et déplacez la fenêtre là-bas:
wmctrl -o $center_viewport
pour contrôler le compiz depuis la ligne de commande. Enregistrez-le comme compiz-send.pydans votre dossier personnel.python compiz-send.py vpswitch switch_to_5_keypour vous assurer qu'elle fonctionne correctement. Il devrait vous faire basculer vers l'espace de travail central.Si cela fonctionne, créez un fichier appelé .switch_to_center_workspace.shdans votre dossier de départ et collez ce qui suit à l'intérieur:
#!/bin/bash
sleep 5 && python /home/user/compiz-send.py vpswitch switch_to_5_key
remplacer userpar votre nom d'utilisateur.
Ouvrez les applications de démarrage, Système -> Préférences -> Applications de démarrage .
Cliquez sur Ajouter et dans l' entrée Command: put /home/user/.switch_to_center_workspace.sh. Mettez ce que vous voulez dans les entrées Nom: et Commentaire :.
Déconnectez-vous et reconnectez-vous et vérifiez que cela fonctionne.
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "activate" with signature "si" on interface "org.freedesktop.compiz" doesn't exist
sleep 5partie du script par un nombre plus élevé, comme sleep 10pour vous assurer que compiz est déjà en cours d'exécution lorsque le script est exécuté. Vous utilisez compiz non?
J'allais poser la question similaire, mais pour 3 espaces de travail horizontaux et j'exécute également compiz, et la wmctrl -dsortie (par espace de travail) ressemble à ceci:
0 * DG: 4098x768 VP: 0,0 WA: 0,24 1366x744 Workspace 10 * DG: 4098x768 VP: 1366,0 WA: 0,24 1366x744 Workspace 10 * DG: 4098x768 VP: 2732,0 WA: 0,24 1366x744 Workspace 1Que j'ai simplement utilisé wmctrl -o 1366,0( valeurs VP ) pour faire du centre mon espace de travail par défaut au démarrage. Pourrait ne pas fonctionner pour tout le monde, mais juste au cas où;)
sh -c "sleep 2;/usr/bin/wmctrl -o 1366,0
Juste une brève note - j'utilise Natty, et grâce à la réponse de @ 谢 继 雷, j'ai remarqué que ce qui suit est signalé en déplaçant le terminal dans chacun des quatre 'espaces de travail' dans Unity:
$ wmctrl -d
# top left
0 * DG: 2048x1200 VP: 0,0 WA: 0,24 1024x576 Workspace 1
# bottom left
0 * DG: 2048x1200 VP: 0,600 WA: 0,24 1024x576 Workspace 1
# top right
0 * DG: 2048x1200 VP: 1024,0 WA: 0,24 1024x576 Workspace 1
# bottom right
0 * DG: 2048x1200 VP: 1024,600 WA: 0,24 1024x576 Workspace 1
... c'est-à-dire qu'ils ne sont ni des bureaux séparés, ni des espaces de travail - simplement la fenêtre change!
Ainsi, pour basculer entre ces quatre fenêtres, appelez simplement la wmctrl -ocommande directement avec les VPvaleurs répertoriées ci-dessus, c'est-à-dire:
wmctrl -o 0,0
wmctrl -o 0,600
wmctrl -o 1024,0
wmctrl -o 1024,600
EDIT: Ups, désolé, je viens de voir que c'est la même chose que la réponse de @ wik - fusionner / supprimer selon le cas ..
wmctrlpeut changer de fenêtre dans le bureau de toute façon. Voir ma réponse ci-dessous.