我想创建一个简单的堆叠窗口管理器(在 C)供私人使用,主要是为了学习和挑战自己。

我看了看 twm的源代码相对较少,铃铛和口哨声似乎很低,因为它不是基于小部件工具包。1 使用诸如GTK+之类的工具包吗?恐怕其中的一些代码和库 twm 可能太过时了(编辑: 弃用),我希望窗口管理器使用相对现代的库。为了理解,我也将对如何从头开始启动窗口管理器的建议感兴趣 - 为此目的,没有太多的教程。

更新: 对于那些想到类似项目的人:我最终使用了普通的LISP和 CLX库. TinyWM-LISP 作为基础和辉煌 CLFSWMStumpwm 是一个很好的帮助。作为参考,我使用了 CLX - 常见的LISP X接口 (PDF警告) 和 #xlib 在freenode上。

有帮助吗?

解决方案

无论您做什么,都使用XCB而不是Xlib。它“现代,异步,更简单,可让您直接访问X11协议。

其他提示

一个非常简约的Wm是 WM2. 。我还没有阅读源代码,因此我不知道这是否是教学示例。当然,您可以使用已经为您喜欢的大量抽象和绘画工作的库 GDKGTK. 。但是,由于这个项目仅用于个人学习,所以我会努力地使用Xlib。

以下是一些可能对您有用的链接:

查看代码 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。

http://www.red-bean.com/decklin/aewm/

XMonad 可能是一个很好的起点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top