2012-10-10 2 views
1

윈도우를 생성하는 간단한 xlib 프로그램이 있습니다. XCreateSimpleWindow 함수에 0, 0을 전달했기 때문에 화면의 왼쪽 위 모서리에 창을 표시해야한다고 생각하지만 위쪽 중앙에 있습니다. 왜 ?Xlib : 윈도우가 틀린 위치에 생성되었습니다.

#include <X11/Xlib.h> 
#include <stdio.h> 
#include <stdlib.h>  

int 
main(int argc, char* argv[]) 
{ 
    Display* display;  
    int screen_num;  
    Window win;   
    unsigned int display_width,display_height;  
    unsigned int width, height; 
    char *display_name = getenv("DISPLAY"); 

    display = XOpenDisplay(display_name); 
    screen_num = DefaultScreen(display); 
    display_width = DisplayWidth(display, screen_num); 
    display_height = DisplayHeight(display, screen_num); 

    width = (display_width/3); 
    height = (display_height/3); 

    win = XCreateSimpleWindow(display, RootWindow(display, screen_num), 0, 0, width, height, 1, BlackPixel(display, screen_num), WhitePixel(display, screen_num)); 

    XMapWindow(display, win); 

    XSync(display, False); 

    while(1) { }  
} 

답변

3

최상위 창은 원하는대로 수행하는 창 관리자가 배치하고 크기를 지정합니다. 종종 크기는 존중되지만 위치는 (장식을위한 장소를 떠나기 위해 도구 모음을 남겨 둘 배치 정책을 명확하게하기 위해 ...)

요청을 원한다면 창 관리자가없는 디스플레이로 시도하십시오 (예 : VNC 또는 이와 유사한 디스플레이를 사용하여 이와 같은 바탕 화면을 사용하지 마십시오.)

+0

윈도우 매니저가없는 디스플레이에서 실행하려면 어떻게해야합니까? VNC를 사용하여 서버에 연결하고 있습니다. – Ashot

+1

VNC 서버를 시작한 다음 창 관리자를 죽이는 것이 가장 쉬운 방법 일 것입니다. vnc 서버의 매개 변수를 올바르게 설정하여 창 관리자를 시작하지 않는 특별 시작 스크립트를 사용하는 방법은 아마도 수행해야 할 작업 일 것입니다. 예를 들어 vncserver -name에 특수 이름을 전달하고 xstartup의 VNCDESKTOP에서이를 확인합니다. – AProgrammer

+0

창 관리자를 사용하지 않도록 설정했는데 제대로 작동하지만 창 관리자가 없어도 아무 것도 할 수 없습니다. 창을 이동하거나 크기를 조정할 수 없습니다. 그것을 사용하지 않고 다른 방법이 있습니까? – Ashot