既存のウィンドウでオーバーライドリダイレクトフラグを設定するには?

既存のウィンドウでオーバーライドリダイレクトフラグを設定するには?

あるウィンドウを他のすべてのウィンドウの上に保持したい(他のウィンドウがフルスクリーンであり、フォーカスがあり、別の親ウィンドウに属していても)。マイユースケースでは、これらのウィンドウはフルスクリーンプレゼンテーションとWebカメラウィンドウ(スクリーンキャストに記録されています)です。私の考えに最適なオプションは、オーバーレイリダイレクトウィンドウにして、ウィンドウマネージャにそれを無視させることです。

しかし、私はウィンドウを生成するプログラムのソースコードを変更したくなく、代わりにいくつかのコマンドラインツールを使ってxpropこれを行います。どうすればいいですか?

以下で同様のことを試しましたが、役に立たなかった。

# xprop -id 0x5c00001 -set override-redirect 1
xprop: error: unsupported conversion for override-redirect

答え1

xdotoolを使用して最初にoverride_redirectフラグを設定できます

xdotool set_window --overrideredirect 1 0x5c00001

その後、ウィンドウマネージャが認識できるように、ウィンドウのマッピングを解除してマッピングします。

xdotool windowunmap 0x5c00001
xdotool windowmap 0x5c00001

ウィンドウはキーボード入力をキャッチできず、マウスだけをキャッチできます。ウィンドウマネージャのコントロールにリセットするには:

xdotool set_window --overrideredirect 0 0x5c00001
xdotool windowunmap 0x5c00001
xdotool windowmap 0x5c00001

関連情報