Risposte:
Grazie a Marco, ho capito come usare wmctrl.
Poiché le aree di lavoro di compiz sono in realtà viewport di un singolo desktop, la soluzione è spostare la viewport corrente in modo da coprire l'area centrale del desktop.
Innanzitutto, chiama wmctrl -dper ottenere le informazioni sul desktop corrente:
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))
Quindi, calcola l'origine della finestra 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
E sposta la finestra lì:
wmctrl -o $center_viewport
per il controllo di compiz dalla riga di comando. Salvalo come compiz-send.pynella tua cartella home.python compiz-send.py vpswitch switch_to_5_keyper assicurarti che funzioni correttamente. Dovrebbe passare allo spazio di lavoro centrale.Se funziona, crea un file chiamato .switch_to_center_workspace.shnella tua cartella home e incolla al suo interno quanto segue:
#!/bin/bash
sleep 5 && python /home/user/compiz-send.py vpswitch switch_to_5_key
sostituendo usercon il tuo nome utente.
Apri Applicazioni di avvio, Sistema -> Preferenze -> Applicazioni di avvio .
Fare clic su Aggiungi e nel comando: inserimento voce /home/user/.switch_to_center_workspace.sh. Inserisci quello che vuoi nelle voci Nome: e Commento:.
Disconnettersi e riconnettersi e verificare che funzioni.
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "activate" with signature "si" on interface "org.freedesktop.compiz" doesn't exist
sleep 5parte dello script con un numero più alto, come sleep 10per assicurarti che compiz sia già in esecuzione quando lo script è in esecuzione. Stai usando compiz giusto?
Stavo per fare la domanda simile, ma per 3 aree di lavoro orizzontali e sto anche eseguendo compiz, e l' wmctrl -doutput (per area di lavoro) è simile al seguente:
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 1Di quanto ho semplicemente usato wmctrl -o 1366,0( valori VP ) per rendere il centro come spazio di lavoro predefinito all'avvio. Potrebbe non funzionare per tutti, ma per ogni evenienza;)
sh -c "sleep 2;/usr/bin/wmctrl -o 1366,0
Solo una breve nota: sto usando Natty e, grazie alla risposta di @ 谢 继 雷, ho notato che quanto segue viene riportato spostando il terminale in ciascuna delle quattro 'aree di lavoro' in 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
... cioè non sono né desktop separati, né aree di lavoro - semplicemente il viewport cambia!
Quindi, per cambiare tra queste quattro finestre, è sufficiente chiamare il wmctrl -ocomando direttamente con i VPvalori sopra elencati, ovvero:
wmctrl -o 0,0
wmctrl -o 0,600
wmctrl -o 1024,0
wmctrl -o 1024,600
EDIT: Ups, mi dispiace, ho appena visto che questo è lo stesso della risposta di @ wik - unisci / elimina come appropriato ..
wmctrlpuò comunque cambiare viewport all'interno del desktop. Vedi la mia risposta qui sotto.