为Linux创建窗口管理器
-
28-09-2019 - |
题
我想创建一个简单的堆叠窗口管理器(在 C
)供私人使用,主要是为了学习和挑战自己。
我看了看 twm
的源代码相对较少,铃铛和口哨声似乎很低,因为它不是基于小部件工具包。1 使用诸如GTK+之类的工具包吗?恐怕其中的一些代码和库 twm
可能太过时了(编辑: 弃用),我希望窗口管理器使用相对现代的库。为了理解,我也将对如何从头开始启动窗口管理器的建议感兴趣 - 为此目的,没有太多的教程。
更新: 对于那些想到类似项目的人:我最终使用了普通的LISP和 CLX库. TinyWM-LISP 作为基础和辉煌 CLFSWM 和 Stumpwm 是一个很好的帮助。作为参考,我使用了 CLX - 常见的LISP X接口 (PDF警告) 和 #xlib
在freenode上。
解决方案
无论您做什么,都使用XCB而不是Xlib。它“现代,异步,更简单,可让您直接访问X11协议。
其他提示
查看代码 DWM. 。代码库是美丽且易于理解的。整个事情大约是2000行。
我写了一个深入的教程系列,向您展示了如何在C ++中编写X11窗口管理器:
此外,您可以在AT上查看一个简单的示例窗口管理器BASIC_WM
出于教学目的,它对它进行了严重评论。
在Xlib vs XCB上 - 如果您首先启动,我建议通过XCB Xlib。 XCB更有效,但是它更低级和更详细的内容(考虑GUI的汇编语言)。在您已经有一个原型工作之前,您不想为过早的优化负担。
http://code.google.com/p/partiwm/ 是尝试从头开始编写窗口管理器(瓷砖而不是堆叠)的尝试,对您阅读代码可能很有用。
Metacity将GTK用于某些UI元素。看到它的黑客和读书。
也可以看看 一些好的XLIB编程指南在哪里?
为了理解,我也会对如何从头开始启动窗口管理器的建议感兴趣
您可能需要查看AEWM窗口管理器。该代码很小,它的基础知识很好。它用C编写并使用Xlib。
XMonad 可能是一个很好的起点。