%20ein%20Fenster%20platziert%20wird%3F.png)
Ich schreibe ein Skript, mit dem ermittelt werden muss, in welchem Ansichtsfenster ein Fenster platziert wird.
Mein Desktop ist 2 x 2 (4 Ansichtsfenster). Normalerweise denkt man, es handele sich um 4 virtuelle Desktops, aber bei Compiz/Unity ist es eigentlich ein Ansichtsfenster und nur ein Desktop, basierend auf xdotool get_num_desktops
.
Zur Vereinfachung der Erklärung sehen Sie sich diese Ansichtsfenster an (ich bin allerdings nicht sicher, ob dies tatsächlich ihre IDs sind):
0 1
2 3
Platzieren Sie Ihr Fenster bei Ansichtsfenster 2, führen Sie aus xwininfo -all
und klicken Sie auf Ihr Fenster. Sie erhalten seine ID und sehen, dass die Werte „oben links“ alle klein sind, als wären sie bei Ansichtsfenster 0, aber diese sind tatsächlich relativ zu Ansichtsfenster 2.
Außerdem finden Sie keine Informationen darüber, um welches Ansichtsfenster es sich handelt.
Weitere Informationen finden Sie unter:
wmctrl -d
Hier werden genaue Informationen darüber angezeigt, um welches Ansichtsfenster es sich handelt.
xdotool get_desktop_viewport
Für die Ansichtsfenster 2 und 3 sind die Angaben nicht präzise.
Antwort1
Es ist eigentlich ganz einfach: Die Informationen zur Position des Fensteransichtsfensters beziehen sich auf das aktuelle Ansichtsfenster.
Geben Sie also einfach xwininfo
ein Fenster ein und wählen Sie es aus.
Ändern Sie nun das Ansichtsfenster und den Typ xwininfo -id 0x...
(0x... ist die ID, die Sie für das Fenster erfasst haben). Die Positions-Werte werden als außerhalb der aktuellen Ansichtsfenster-Grenzen liegend angezeigt, mit relativen Werten basierend auf dem aktuellen Ansichtsfenster wie:
Absolute upper-left X: -1270
Absolute upper-left Y: 62
Anhand dessen lässt sich bestimmen, wo sich das Fenster befindet.
In diesem Fall war ich auf Ansichtsfenster 1 und das Fenster auf Ansichtsfenster 0.