我想创建一个简单的堆叠窗口管理器(在C
中)供私人使用,主要用于学习和挑战自己。
我查看了twm
的源代码,这些源代码的铃声和口哨相对较少,但由于它不是基于小工具工具包,所以它似乎非常低级。 {{3使用GTK +等工具包会更好吗?我担心twm
中的一些代码和库可能过于陈旧(编辑:已弃用),我希望窗口管理器使用相对现代的库。为了便于理解,我也对如何从头开始一个窗口管理器的建议感兴趣 - 没有很多教程可以用于此目的。
更新:对于那些考虑类似项目的人:我最终使用了Common Lisp和1。 CLX library作为基础,辉煌的tinywm-lisp和CLFSWM是一个很好的帮助。作为参考,我在Freenode上使用了Stumpwm( PDF警告)和#xlib
。
答案 0 :(得分:21)
无论你做什么,使用XCB而不是Xlib。它“现代,异步,简单,让您直接访问X11协议。
答案 1 :(得分:6)
极简主义的WM是wm2。我没有阅读源代码,因此我不知道它是否是一个教学示例。当然,您可以使用已经完成大部分抽象和绘图工作的库,如gdk和gtk。但由于这个项目只是为了个人学习,我会很努力地直接使用Xlib。
以下是一些可能对您有用的链接:
答案 2 :(得分:6)
查看dwm的代码。代码库很漂亮,易于理解。整件事大约有2000行。
答案 3 :(得分:4)
我编写了一个深入的教程系列,向您展示了如何用C ++编写X11窗口管理器:
此外,您可以在
查看一个简单的示例窗口管理器basic_wm出于教学目的,它受到了很多评论。
在Xlib vs XCB上 - 如果你刚开始,我会推荐Xlib而不是XCB。 XCB效率更高,但它更低级,更冗长(想想GUI的汇编语言)。在你已经有一个原型工作之前,你不想让自己过早优化。
答案 4 :(得分:2)
http://code.google.com/p/partiwm/试图从头开始编写窗口管理器(平铺,而非堆叠),阅读代码可能对您有用。
答案 5 :(得分:2)
metacity对某些UI元素使用gtk。请参阅其HACKING和README。
答案 6 :(得分:2)
为了便于理解,我也会对如何从头开始启动窗口管理器的建议感兴趣
您可能想看看aewm窗口管理器。代码很小,很好地完成了基础知识。它是用C语言编写的,并使用Xlib。
答案 7 :(得分:0)
Xmonad可能是一个很好的起点。