Xウィンドウ(ウィンドウマネージャウィンドウ)の非クライアント領域プロパティを読み取るには?XChangeProperty
CプログラムでXプロパティを設定しました。マウスを介して非クライアント領域(つまり、ウィンドウのタイトルバー)を使用して選択すると、xprop
アプリケーションで作成されたウィンドウのプロパティは表示されません。両方のシナリオをテストしました。使用する場合xprop 8s name_of_non_registered_property
とxprop 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 内部コンポーネントであり、イベントを登録しないことがあります。