wmctrl sagt, ich habe einen Arbeitsbereich, wenn ich tatsächlich vier habe

2704
Ned Batchelder

Ich versuche, ein gvim pro Arbeitsbereich mit diesem Skript als Ausgangspunkt zu erstellen: http://www.openhex.org/notes/2011/1/27/one-vim-server-per-desktops

Ich weiß, als ich dieses Skript vor Monaten zum ersten Mal fand, habe ich wmctrl -dvier Arbeitsbereiche aufgelistet. Aber jetzt, wenn ich es versuche, zeigt es nur einen:

$ wmctrl -d 0 * DG: 7208x1003 VP: 0,0 WA: 0,0 1802x976 Workspace 1 

Die Auflistung der Fenster zeigt, dass sich alle auf dem gleichen Desktop befinden, die Bildschirmbreiten jedoch voneinander beabstandet sind:

$ wmctrl -lGx 0x02200003 0 0 1952 1802 27 gnome-panel.Gnome-panel ned-vbox Bottom Expanded Edge Panel 0x0260001e 0 0 0 1802 1003 desktop_window.Nautilus ned-vbox x-nautilus-desktop 0x04600004 0 332 140 1169 722 gnome-terminal.Gnome-terminal ned-vbox Terminal 0x046000c6 0 116 288 1433 512 gnome-terminal.Gnome-terminal ned-vbox Terminal 0x0480001e 0 388 48 1604 948 gvim.Gvim ned-vbox .bashrc (~) - GVIM 0x04604c55 0 784 48 1214 948 gnome-terminal.Gnome-terminal ned-vbox Terminal 

Dies ist Ubuntu 10.10, auf dem compiz in einer virtuellen Box ausgeführt wird (weshalb der Bildschirm 1802 Pixel breit ist).

Warum sind meine Arbeitsbereiche in wmctrl nicht sichtbar? Sie verhalten sich in der grafischen Benutzeroberfläche ordnungsgemäß, alle Tastenkombinationen funktionieren ordnungsgemäß und Menüelemente zum Verschieben von Fenstern zwischen Arbeitsbereichen sind in Ordnung. Wie bekomme ich wmctrl, um mir zu zeigen, was ich will? Gibt es eine andere Möglichkeit, Arbeitsbereichsinformationen präzise zu erhalten?

5

1 Antwort auf die Frage

8
Aron Griffis

Compiz implementiert Ansichtsfenster anstelle von Desktops. Sie können die Anzahl der Ansichtsfenster basierend auf der Breite des Desktops berechnen:

$ wmctrl -d 0 * DG: 7680x1200 VP: 0,0 WA: 0,0 1920x1175 Workspace 1 

Dies besagt, dass ich vier Ansichtsfenster (7680/1920 = 4) habe und derzeit das erste sehe. (Leider sehe ich in wmctrl keine Möglichkeit, die Breite eines Ansichtsfensters zuverlässig abzurufen, da der Arbeitsbereich verkleinert wird, wenn ein Panel an einer Kante Platz beansprucht. Sie können entweder harte Zahlen verwenden oder mit xdpyinfo die Pixelabmessungen ermitteln von Ihrem Bildschirm.)

So wechseln Sie zum zweiten Ansichtsfenster:

$ wmctrl -o 1920,0 

Wenn Sie dieses Zeug in bash analysieren wollen, hier ein Beispiel:

$ dimensions=$(xdpyinfo | awk '$1=="dimensions:"') $ screen_width=$ $ info=( $(wmctrl -d | awk '') ) $ desktop_width=$ $ viewports=$(( desktop_width / screen_width )) $ current_vp=$(( $ / screen_width )) 
Please note that this considers the viewports to be arranged horizontally only. In case of a 2x2 layout (Unity's default), the screen height needs to be considered also (`screen_height=$`). blueyed vor 11 Jahren 0