私の罪のために (そして学習体験を楽しむために)、私はウィンドウ マネージャーを作成しています (私は知っています、知っています)。
Python と XCB (python-xpyb) を使用しています。
これまでのところ、ルート ウィンドウで SubStructureRedirect マスクを使用する必要があることがわかっており、アプリケーションのトップレベル ウィンドウに関連するイベントが正常に渡されています。xterm を起動してこれをテストしています。
ConfigureRequestEvent を取得し、その後一時停止し、さらに別の ConfigureRequestEvent、さらに MapRequestEvent を取得します。
MapRequestEvent を取得したら、 を呼び出しますconnection.core.MapWindowChecked(e.window)
。これは機能しますが、1 ピクセルまたは 2 幅/高さのウィンドウをマップします。
私の質問は、ウィンドウを正しいサイズにするために ConfigureRequestEvent で何をすべきかということです (それが不足していると仮定して)。
より正確には、私は正確に何と呼んでいますか? MapWindowChecked は当然の選択でしたが、幅/高さを実際に構成する方法が見つからないようです。私はそれがConfigureWindowだと推測していますが、受け入れる引数は私にはわかりにくいようです。前回呼び出したときは xcb.xproto.CW.EventMask を使用しましたが、CW のどのフラグも幅/高さに関連しているようには見えません。
PS このすべてに関するドキュメントは、私には非常にわかりにくいようです。xcb を使用していると思われる 2 つの Python ウィンドウ マネージャーを見てきましたが、それらは追加機能を備えた独自のカスタム バージョンを使用しているようです。また、実行中のウィンドウ マネージャー (デバッガーのウィンドウのマッピングも担当) の検査/デバッグは PITA であるため、ここで質問します。おそらく、2 台のマシンまたは VM などを使用する方がよいでしょう。
ありがとう。