如何开始写一个合成WM?

我想写一个基本的硬件加速的窗口pipe理器,所以我一直在寻找一些关于如何入门的文档,但是我只能设法find这个使用过时版本的Clutter的教程 ,而不会用当前可用的任何版本构build。 还有什么其他好的资源可以做到这一点,或者,还有一个真正的合成WM来看看来源?

在你的问题中有两个部分:1)如何写WM 2)如何写复合管理器

一些有助于理解第二部分的链接(除了xcompmgr源码):

窗口管理器“第一部分”:

  • 我有一个简单的JavaScript脚本〜100 loc: https : //github.com/sidorares/node-x11/blob/master/examples/windowmanager/wm.js
  • 另一个极简主义(用C语言),很好开始作为参考: https : //code.google.com/p/winmalist/
  • 最重要的关键字: SubstructureRedirect事件掩码。 这里有一些文档

最初的演示合成管理器是xcompmgr ,我建议您理解底层的X扩展。

如果您使用OpenGL进行硬件加速渲染,则需要读取EXT_texture_from_pixmap扩展名,以避免通过用户空间复制窗口内容。 该扩展允许您为这些副本使用硬件加速的blits。

您可能还会对_NET_WM_SYNC_REQUEST的规范感兴趣 ,以允许无铅渲染与垂直回扫同步。