0

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

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

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

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

int child = fork();
if(child==0) {
    printf("Child");
    execve("/usr/bin/xterm", NULL, NULL);
}

但似乎没有奏效。

我没有太多代码要显示,因为我只是想修改上面粘贴的教程中的 che 代码(我添加了一个无限循环,以及其他一些东西)。

那么如何启动 xterm、pcmanfm 等 x 应用程序并在当前 x 会话中显示它呢?

以及如何在新窗口中绘制应用程序?

最后一个问题:我试图复制并粘贴 X 教程的 hello world 窗口示例,但它似乎没有加载任何窗口。代码在这里: http ://www.x.org/releases/X11R7.7/doc/libxcb/tutorial/index.html#helloworld

4

1 回答 1

1

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

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

于 2013-10-03T20:46:13.310 回答