非クライアント領域でXウィンドウのプロパティを読み取る

非クライアント領域でXウィンドウのプロパティを読み取る

Xウィンドウ(ウィンドウマネージャウィンドウ)の非クライアント領域プロパティを読み取るには?XChangePropertyCプログラムでXプロパティを設定しました。マウスを介して非クライアント領域(つまり、ウィンドウのタイトルバー)を使用して選択すると、xpropアプリケーションで作成されたウィンドウのプロパティは表示されません。両方のシナリオをテストしました。使用する場合xprop 8s name_of_non_registered_propertyxprop 8s name_of_registered_propertyメッセージが異なるため、XAtomを正しく生成します。

私はPlasma5.15でのみxpropをテストしました(KWinはX.orgで動作します)。

GTK+2とXCB(またはXLIb)コードを混ぜています。XListPropertyを使用すると、私の原子の名前が前の関数への前XGetAtomNameの呼び出しの要素に表示され、結果は(C stdlib)XGetAtomNameに保存されます。putsメインループが最初に呼び出されたときにGTKが問題を引き起こすのではないでしょうか?私のプロパティを追加する前に、ウィンドウについて知っていました。

私の考えでは、システムの問題よりもプログラミングの問題に近いです。

> xwininfo -all -root
....
0xba00001 "program": ("program" "Program")  10x10+10+10  +10+10
    1 child:
    0xba00002 (has no name): ()  1x1+-1+-1  +9+9
...
>xprop -id 0xba00001
 WM_CLASS(STRING) = "program", "Program"
 WM_COMMAND(STRING) = { "program" }
 _NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0xba00002
 _KDE_NET_WM_USER_CREATION_TIME(CARDINAL) = 29562975
 WM_CLIENT_LEADER(WINDOW): window id # 0xba00001
 _NET_WM_PID(CARDINAL) = 25223
 WM_LOCALE_NAME(STRING) = "pl_PL.UTF-8"
 WM_CLIENT_MACHINE(STRING) = "linux-rvnb"
 WM_NORMAL_HINTS(WM_SIZE_HINTS):
                 program specified size: 10 by 10
>xprop -id 0xba00002
>

ベストアンサー1

このコマンドはすべてのサブキーを印刷します。

xwininfo -all -root

すべてのウィンドウマネージャがルートウィンドウを使用して背景を表示するわけではありません。クライアント以外の領域をクリックすると、背景を示すウィンドウに関する情報が表示されます。ルートウィンドウに関する情報を表示するには、次のようにします。

xprop -root

原子を正しく設定すると、xprop読み取ることができます。コマンドのフォーマット部分xpropは必要ありません。

xprop name_of_registered_property

原子を含むウィンドウを見つけるには、すべての子を繰り返す必要があります。

wmコードを書かない場合は、タイトルバーを無視する必要があります。これはクライアント側ではなく wm 内部コンポーネントであり、イベントを登録しないことがあります。

おすすめ記事