一个重要的决定是您将如何与X服务器对话。 您可以将Xlib绑定用于您选择的语言,也可以使用更高级别的XCB绑定。 (如果您疯了,则可以直接打开X服务器的套接字。)
要了解窗口管理器的行为方式,有两个文档指定了约定和策略:EWMH和ICCCM1。 符合这些要求意味着您的窗口管理器将在GNOME,KDE,XFCE和随之而来的任何其他桌面环境中表现良好,尽管在初次尝试时完全忽略它们当然很容易。
窗口管理器不必是庞大而复杂的C球—成功的窗口管理器已经用Lisp,Haskell和Python等高级语言编写,甚至C语言中的一些语言仍然很小并且易于阅读。 用Haskell编写的XMonad停留在1000行以下的时间很长一段时间。 StumpWM(通用Lisp)和DWM(C)都很简约。 您也许可以阅读其源代码,以获取有关如何设计WM的灵感。
1伊利亚·纽伦(Elijah Newren)写道:
不要去看这些东西。 他们真的很无聊。 如果这样做,您可能最终会赶上睡眠,而不是在Metacity上乱砍。 ;-)
想到这一点,Metacity的文档很好地说明了它如何与Windows交互以及它支持哪种扩展属性。