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 -d
per 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
compiz-send.py
nella tua cartella home.python compiz-send.py vpswitch switch_to_5_key
per assicurarti che funzioni correttamente. Dovrebbe passare allo spazio di lavoro centrale.Se funziona, crea un file chiamato .switch_to_center_workspace.sh
nella 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 user
con 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 5
parte dello script con un numero più alto, come sleep 10
per 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 -d
output (per area di lavoro) è simile al seguente:
0 * DG: 4098x768 VP: 0,0 WA: 0,24 1366x744 Workspace 1
0 * DG: 4098x768 VP: 1366,0 WA: 0,24 1366x744 Workspace 1
0 * DG: 4098x768 VP: 2732,0 WA: 0,24 1366x744 Workspace 1
Di 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 -o
comando direttamente con i VP
valori 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 ..
wmctrl
può comunque cambiare viewport all'interno del desktop. Vedi la mia risposta qui sotto.