3

X ウィンドウ コマンドのオプションに渡すのに適したジオメトリを取得する方法を見つけて、-geometryGNOME 自体が管理するもの (GNOME パネル ウィンドウなど) と重複しない X ルート ウィンドウ全体をカバーすることが保証されるようにする必要があります。これは、X ルート ウィンドウ全体のジオメトリを返す出力と同じではなく、xwininfo -rootGNOME パネルによって消費される領域が必ず含まれます。KDE を使用しなくなったので、KDE ​​についても同じである必要はありません。

できれば、X Windows コマンド ライン ユーティリティを使用してそのジオメトリを取得でき、Xlib プログラミングに頼る必要がないようにしたいと考えています (つまり、スクリプトから取得したいと考えています)。スクリプトは、GNOME コマンドライン ユーティリティに依存する場合があります。

基本的な計算を使用して GNOME パネルを「差し引く」ことはオプションですが、唯一の GNOME パネル X ウィンドウのみを考慮する必要があるという保証が得られる場合に限ります。しかし、考慮する必要があるのは GNOME パネル ウィンドウだけではないと思います。マウスがXルートの一番下に移動したときにのみ表示されるため、「下部拡張エッジパネル」として表示されるウィンドウが下部にあるため、xwininfo不動産に関して競合している場合と競合していない場合があるためです。窓。しかし、本当に GNOME パネルだけを検討するのであれば、その「引き算」方法で十分かもしれません。

私の使用例は次のとおりです。さまざまな Microsoft Windows デスクトップに RDP するためにrdesktopを使用しています。rdesktopX ウィンドウは表示後にサイズ変更できないため、実行前に X ウィンドウのサイズを決定する必要 があります。GNOME パネルのような GNOME 管理のウィンドウと競合しない限り、そのウィンドウがルート ウィンドウの領域を最大限に消費する必要があります。私が今行っているのは、 を呼び出すラッパー スクリプトで特定のデスクトップのジオメトリをハードコーディングすることrdesktopですが、ディスプレイ ハードウェアが必然的に異なるさまざまなデスクトップで作業し、結果として X ルート ウィンドウにバリエーションが生じるため、必要なことを実行できません。ジオメトリ。X ルート ウィンドウのジオメトリをrdesktopコマンドを実行すると、RDP ウィンドウが GNOME デスクトップの表示領域を超えて拡張されます。これは、GNOME のウィンドウ マネージャーが実際の左上隅を押し下げて GNOME パネルとの重なりを回避するためです。その結果、RDP ウィンドウの一部がマウス操作から隠されます。 .

xwininfo -root -childrenを使用して、X ルートの直系の子孫に、これらの次元を抽出するために一貫して使用できるウィンドウである X ウィンドウを見つけることができるかどうかを確認しようとしましたが、名前は GNOME デスクトップソフトウェアの実装の詳細のように見えます (またはメタシティ WM)、またはその両方であり、私が依存したいものではないかもしれません。

4

1 に答える 1

3

ウィンドウ マネージャーは、ルート ウィンドウにいくつかのプロパティを配置します。プロパティの 1 つは、各ワークスペースの「ワークエリア」、つまり、パネルやモノによって隠されていないエリア用です。

私のマシンでの「xprop -root」の出力の一部には、次のものが含まれています。

_NET_CURRENT_DESKTOP(カーディナル) = 0

_NET_WORKAREA(カーディナル) = 0, 32, 1440, 838, 0, 32, 1440, 838, 0, 32, 1440, 838, 0, 32, 1440, 838

_NET_CURRENT_DESKTOP プロパティは、現在のワークスペースの番号を示します。

_NET_WORKAREA は、4 つのグループで、各ワークスペースのワークエリアの (x、y、幅、高さ) を提供します。

これは、Extended Window Manager Hints Specification - http://standards.freedesktop.org/wm-spec/latest/ar01s03.html#id2568237に記載されています。

おそらく、ウィンドウのフレームとタイトル バーの領域を差し引く必要がありますが、これで十分です。追加のコーディングを行って正確にしたい場合は、_NET_WM_REQUEST_FRAME_EXTENTS についてお読みください: http://standards.freedesktop.org/wm-spec/latest/ar01s04.html#id2568770

于 2011-11-16T20:16:59.363 に答える