2013-06-14 2 views
5

XResizeWindow()を使用して2つのモニターにまたがるウィンドウを作成しようとしていますが、ウィンドウマネージャーですか?それを1に制限しています。X11ウィンドウを複数のモニターにまたがるようにする方法

WMに制限しないように指示するためのヒントやプロパティはありますか?

私のテストケースでは、nVidiaが3200x1200の画面をKDE4に提示する2台の1600x1200モニターがあります。 XDisplayWidth(表示、0); 3200とXDisplayHeight(display、0)を返します。リターン1200

私は220,0でウィンドウ1700x930ため

XCreateWindow(display, DefaultRootWindow(display), 
       220, 0, 1700, 930, 
       1, DefaultDepth(display,screen), 
       InputOutput, CopyFromParent, 
       CWCursor, &attributes); 

を呼び出すと、私は左のモニターに完全にそれを維持、0,0にウィンドウ1593x930を取得します。 (私は7ピクセルがウィンドウの装飾であると仮定します。)

しかし、次にXMoveWindow(display、win、800、0)を使用すると、ウィンドウが移動します画面をスパンすることができます。次に、3200ワイド(マイナス数ピクセル)まで拡大することができます。

ウィンドウマネージャー、またはこれを行っている人には、ウィンドウを1台のモニターに限定するのではなく、画面全体を使えるようにするためにできることはありますか?

ありがとうございます! WMをスマートにし、可能な限り最高の形で窓を配置することになっているよう

%xrandr -q --verbose 
xrandr: Failed to get size of gamma for output default 
Screen 0: minimum 3200 x 1200, current 3200 x 1200, maximum 3200 x 1200 
default connected 3200x1200+0+0 (0x161) normal (normal) 0mm x 0mm 
    Identifier: 0x160 
    Timestamp: 64409661 
    Subpixel: unknown 
    Clones:  
    CRTC:  0 
    CRTCs:  0 
    Transform: 1.000000 0.000000 0.000000 
       0.000000 1.000000 0.000000 
       0.000000 0.000000 1.000000 
       filter: 
3200x1200 (0x161) 192.0MHz *current 
    h: width 3200 start 0 end 0 total 3200 skew 0 clock 60.0KHz 
    v: height 1200 start 0 end 0 total 1200   clock 50.0Hz 

答えて

2

一般に、アプリケーションは、厳格にそのウィンドウのサイズと位置を制御しようとしないはずです。

XSizeHints sh; 
sh.width = sh.min_width = 1700; 
sh.height = sh.min_height = 930; 
sh.h = 220; 
sh.y = 0; 
sh.flags = PSize | PMinSize | PPosition; 
XSetWMNormalHints(dpy, win, &sh); 
XMapWindow(dpy, win); 

WMSはmin_widthを尊重し、これより小さいウィンドウを縮小することはありません:あなたはとにかくコントロールしたい場合は、このようなXSizeHintsを使用してみてください。

複数のモニタにまたがるフルスクリーンウィンドウが必要な場合、これは別の方法で行われます。hereを参照してください。

+0

Aha! min_widthを設定すると、そのトリックが実行されます。 アプリケーションは、ユーザーが明示的にウィンドウをどの程度大きくしたいのかをアプリケーションに明示的に指示したときにのみ、サイズについて厳密になるように試みます。だから私は画面のサイズを確認することができますし、それが十分な場合は、手動でmin_widthで強制的に、次にサイズを変更した後にmin_widthを640に戻します。 ありがとうございます! –

+1

指定されたサイズの場合、P *の代わりにUSSize/USMinSizeなどを使用する必要があります(ユーザ指定の設定はより尊重されているはずです)。 –

関連する問題