2012-10-10 63 views
1

我有一個簡單的xlib程序可以創建窗口。我認爲它必須在屏幕的左上角顯示窗口,因爲我將0,0傳遞給XCreateSimpleWindow函數,但它位於中上部。爲什麼?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