ウィンドウがどのビューポート(compiz / unity)に配置されているかどうかを確認するには?

ウィンドウがどのビューポート(compiz / unity)に配置されているかどうかを確認するには?

私は、ウィンドウがどのビューポートに配置されるかを決定する必要があるスクリプトを作成しています。

私のデスクトップは2×2(4つのビューポート)です。通常は4つの仮想デスクトップと見なされますが、compiz / unityでは実際には1つのビューポートですxdotool get_num_desktops

説明を助けるために、次のビューポートを見てください(実際にIDであるかどうかはわかりません)。

0 1  
2 3  

ウィンドウをビューポート 2 に配置して を実行したxwininfo -all後、ウィンドウをクリックするとその ID が表示され、「左上」の値がまるでビューポート 0 にあるかのようにすべて小さいですが、実際には値が上はビューポート 2 に基づいています。

また、どのビューポートにあるかについての情報が見つかりません。

以下で詳細情報を確認できます。
wmctrl -d現在存在するビューポートに関する正確な情報を表示します。
xdotool get_desktop_viewportビューポート2と3では正確ではありません。

答え1

実際にはとても簡単です。ウィンドウビューポート位置情報は現在のビューポートに基づいています。

したがって、xwininfoウィンドウを入力して選択するだけです。
ビューポートとタイプを変更しますxwininfo -id 0x...(0x ...はウィンドウに対して収集したIDです)。位置値は現在のビューポート制限の外側に表示され、相対値は次のように現在のビューポートに基づいています。

Absolute upper-left X:  -1270
Absolute upper-left Y:  62

これに基づいて、ウィンドウがどこにあるかを判断できます。
この例では、私はビューポート1にあり、ウィンドウはビューポート0にあります。

関連情報