2013-06-14 4 views
5

XResizeWindow()를 사용하여 2 개의 모니터를 확장하는 윈도우를 만들려고합니까? 그것을 하나로 제한하고있다.X11 윈도우를 여러 모니터로 확장하는 방법

WM에 제한하지 말라고 알릴 수있는 힌트 또는 속성이 있습니까?

제 테스트의 경우, nVidia가 KDE4에 3200x1200 화면으로 제공하는 두 개의 1600x1200 모니터가 있습니다. XDisplayWidth (디스플레이, 0); 3200 및 XDisplayHeight (display, 0)를 반환합니다. 내가, 내가 0,0 윈도우 1593x930을 얻을 220,0에서 윈도우 1700x930에 대한

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

전화 왼쪽 모니터에 완전히 유지하면 1200

반환합니다. 그보다 더 큰 XResizeWindow는 1593으로 축소됩니다. (저는 7 픽셀이 윈도우 장식입니다. 괜찮습니다.)

그러나 XMoveWindow (display, win, 800, 0) 화면을 스팬하려면 3200 와이드 (몇 픽셀 빼기)까지 확대 할 수 있습니다.

창 관리자 나이 작업을 수행하는 사람에게 창을 단일 모니터로 제한하지 말고 전체 화면을 사용하도록 할 수있는 방법이 있습니까?

감사합니다. 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

아하! min_width를 설정하면 트릭을 수행합니다. 응용 프로그램은 사용자가 응용 프로그램에 윈도우를 원하는 크기를 명시 적으로 알려주는 경우에만 크기에 대해 엄격하게하려고 시도합니다. 따라서 화면 크기를 확인하고 충분히 큰 경우 수동으로 min_width로 강제 설정 한 다음 크기를 조정 한 후 min_width를 640으로 다시 설정하십시오. 감사합니다. –

+1

지정된 크기의 경우 P * 대신 USSize/USMinSize 등을 사용해야합니다 (사용자 지정 기본 설정이 더 많이 고려되어야합니다). –

관련 문제