繁体   English   中英

为Linux创建窗口管理器

[英]Creating a window manager for Linux

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

我查看了twm的源代码,它的铃声和口哨相对较少,但它似乎非常低,因为它不是基于小工具工具包。 1使用GTK +等工具包会更好吗? 我担心twm中的一些代码和库可能过于陈旧( 编辑:不推荐),我希望窗口管理器使用相对现代的库。 为了便于理解,我也对如何从头开始一个窗口管理器的建议感兴趣 - 没有很多教程可以用于此目的。

更新:对于那些考虑类似项目的人:我最终使用了Common Lisp和CLX库 tinywm-lisp作为基础,辉煌的CLFSWMStumpwm是一个很好的帮助。 作为参考,我在Freenode上使用了CLX - Common LISP X接口PDF警告 )和#xlib

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

一个非常简约的WM是wm2 我没有阅读源代码,因此我不知道它是否是一个教学示例。 当然,您可以使用已经为gdkgtk做很多抽象和绘图工作的库。 但由于这个项目仅用于个人学习,我会努力工作并直接使用Xlib。

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

看看dwm的代码。 代码库很漂亮,易于理解。 整件事大约有2000行。

我编写了一个深入的教程系列,向您展示如何用C ++编写X11窗口管理器:

此外,您可以查看一个简单的示例窗口管理器,basic_wm,at

它因教学目的而备受好评。

在Xlib和XCB上 - 如果你刚开始的话,我会推荐Xlib而不是XCB。 XCB效率更高,但它更低级,更冗长(想想GUI的汇编语言)。 在你已经有一个原型工作之前,你不想让自己过早优化。

http://code.google.com/p/partiwm/尝试从头开始编写窗口管理器(平铺,而不是堆叠),阅读代码可能对您有用。

metacity对某些UI元素使用gtk。 请参阅其HACKING和README。

另请参阅哪些优秀的Xlib编程指南?

为了便于理解,我也会对如何从头开始启动窗口管理器的建议感兴趣

您可能想看看aewm窗口管理器。 代码很小,很好地完成了基础知识。 它是用C语言编写的,使用的是Xlib。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM