我試圖使用xcb庫實現基本的窗口管理器。xcb:如何啓動應用程序並將其顯示到窗口中
我設法與X服務器連接,並抓取一些事件,但我無法計算如何啓動應用程序並在當前X會話中顯示它。
我試圖按照XCB教程: http://xcb.freedesktop.org/tutorial/
基本上我認爲(和probaly我錯了),一旦會話開始,我的「窗口管理器」,如果我想發動應用程序,我只需要叉它,並啓動應用程序,所以例如:
int child = fork();
if(child==0) {
printf("Child");
execve("/usr/bin/xterm", NULL, NULL);
}
但似乎沒有工作。
我沒有太多的代碼顯示,因爲我只是想修改上面粘貼的教程中的代碼(我添加了一個無限循環,以及其他一些東西)。
那麼如何啓動一個像xterm,pcmanfm這樣的x應用程序並在當前x會話中顯示它呢?
而我如何能在新窗口中繪製應用程序?
而最後一個問題: 我試圖複製和粘貼X教程的hello world窗口示例,但似乎沒有加載任何窗口。代碼在這裏: http://www.x.org/releases/X11R7.7/doc/libxcb/tutorial/index.html#helloworld
好吧,我用execve解決了這個問題(路徑是錯誤的,並且有一個與鼠標按鈕的鍵綁定,我沒有注意到),但第二部分是有用的,所以我更好地理解xcb如何工作。現在我還有另外一個問題,如果我想在窗戶周圍畫一個裝飾,我必須在這些事件中的一箇中進行裝飾。哪個更好? – Ivan
大多數WM爲標題欄/框架創建新窗口,並將應用程序窗口作爲框架窗口的子窗口。查看我的簡單WM示例,如果尚未重新設置,則在MapRequest事件處理程序中進行重新佈局 - https://github.com/sidorares/node-x11/blob/master/examples/windowmanager/wm.js –