8

ウィンドウの位置とサイズを見つける必要がありますが、方法がわかりません。たとえば、私が試してみると:

id.get_geometry()    # "id" is Xlib.display.Window

私はこのようなものを得る:

data = {'height': 2540,
'width': 1440,
'depth': 24,
'y': 0, 'x': 0,
'border_width': 0
'root': <Xlib.display.Window 0x0000026a>
'sequence_number': 63}

ウィンドウの位置とサイズを見つける必要があるため、私の問題は次のとおりです。「y」、「x」、および「border_width」は常に0です。さらに悪いことに、ウィンドウ フレームなしで「高さ」と「幅」が返されます。

この場合、私の X スクリーン (寸法は 4400x2560) では、x=1280、y=0、幅=1440、高さ=2560 と予想されました。

言い換えれば、私はPythonに相当するものを探しています:

#!/bin/bash
id=$1
wmiface framePosition $id
wmiface frameSize $id

Xlib が私が望んでいるものではないと思われる場合は、(上記の bash スクリプトのように) ウィンドウ ID を引数として取ることができる場合は、Python で Xlib 以外のソリューションを自由に提供してください。Python コードで bash スクリプトの出力を使用するという明らかな回避策は、正しくないと感じます。

4

3 に答える 3

2

Liss は、次のソリューションをコメントとして投稿しました。

from ewmh import EWMH
ewmh = EWMH()

def frame(client):
    frame = client
    while frame.query_tree().parent != ewmh.root:
        frame = frame.query_tree().parent
    return frame

for client in ewmh.getClientList():
    print frame(client).get_geometry()

回答には実際の回答が含まれている必要があり、リンクの腐敗を防ぐため、ここにコピーしています。

于 2015-09-03T21:24:22.957 に答える