我正在尝试使用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
答案 0 :(得分:1)
您不“在新窗口中绘制应用程序” - 您只需启动一个进程并为自己创建一个窗口。检查是否为您的过程正确设置了DISPLAY变量。
要管理窗口,请在根窗口上设置SubstructureRedirect掩码,并从(新)应用程序窗口响应子结构/映射请求通知。