2011-02-22 4 views
1

私は現在、複数の画面にまたがるマルチウィンドウアプリケーションに取り組んでいます。このソフトウェアはxlibで書かれており、gnomeデスクトップのubuntu 10.10で動作します。 すべてのウィンドウの位置を取得するには、/etc/X11/xorg.confファイル、特にSeverLayoutセクションにアクセスしたいと思います。xorg.confを取得するserverLayout with C++

Section "ServerLayout" 
    Identifier "aticonfig Layout" 
    Screen  "screen0" 0 0 
    Screen  "screen1" 1920 0 
    Screen  "screen2" 3840 0 
    Screen  "screen3" 5760 0 
EndSection 

私は(...、0、1920)各画面のX値を取得したいのですXlibは何とかこの情報へのアクセスを提供しています:それはどういうわけか、このように見えますか?

おかげ

+0

"各画面のX値"で正確に何を考慮しますか? –

+0

X値では、画面の絶対座標を意味します。この場合、0,1920,3840、および5760 – underdoeg

答えて

0

Xの複数のモニタのレイアウトに関する情報は、特にそれらが単一の論理画面に結合されている場合は、libXrandrlibXinerama APIで利用できます。残念ながら、バージョン1.2のlibXrandrに追加されたマルチスクリーンAPIは、マニュアルページでは扱いませんが、extension specXrandr.h header fileを見る必要があります。

0

あなたはXWidthOfScreenとXHeightOfScreen機能を使用することができます。

XScreenCount(画面数を取得する)とXScreenOfDisplayを使用して適切な画面構造を取得します。

より良い方法は、画面のルートウィンドウを取得し、XParseGeometry関数を使用してそのジオメトリを解析することです。

+0

の回答に感謝します。私はそれを調べました。それでも私は画面の座標を与えません。もちろん、この例では、screen0.x * screen0.widthを計算してscreen1.xを得ることができますが、ウィンドウの配置を柔軟にしたいと考えています。 – underdoeg

+0

@philip答えを更新しました。 XParseGeometryは画面座標を与える必要があります。 –

関連する問題