xcb:如何启动应用程序并将其显示在窗口中

时间:2013-10-02 20:58:28

标签: xorg window-managers xcb

我正在尝试使用xcb库实现基本窗口管理器。

我设法与X服务器连接,并获取一些事件,但我无法想象如何启动应用程序并在当前X会话中显示它。

我正在尝试遵循xcb教程: http://xcb.freedesktop.org/tutorial/

基本上我认为(并且我错了)一旦会话开始,我的“windowmanager”,如果我想启动一个应用程序,我只需要分叉它,然后启动应用程序,例如:

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

1 个答案:

答案 0 :(得分:1)

您不“在新窗口中绘制应用程序” - 您只需启动一个进程并为自己创建一个窗口。检查是否为您的过程正确设置了DISPLAY变量。

要管理窗口,请在根窗口上设置SubstructureRedirect掩码,并从(新)应用程序窗口响应子结构/映射请求通知。