编写窗口管理器的现代方法

Dav*_*ven 16 x11 window-managers xlib

我正在尝试写一个窗口管理器.(实际上,我已经编写了一个操作系统和编译器,但这不是重点.)

XLib和xcb并不是完全令人讨厌的,至少不是因为win32标准,但它们肯定是非常古老的,并且不能很好地利用体面的抽象来让我的生活变得更轻松.不仅如此,但现代高级语言明显缺乏良好的绑定.

我的问题是:这几天所有这些低级别的东西真的很必要吗?是否存在能够为我封装所有令人讨厌的东西的库?我有一个模糊的记忆,启蒙人已经做过这样的事情,却找不到任何东西.或者像GDK这样的现代小部件库是否具有足够的功能,我不需要触及Xlib层?

任何带有Java绑定的库都特别有意义......

Nat*_*idd 9

这几天真的有必要这些低级别的东西吗?

如果用"低级别的东西"你的意思是C语言然后没有,从技术的角度来看是没有必要的; 您可以使用XCB的XML为任何语言生成绑定.

但是,如果用"低级别的东西"你的意思是在X协议级别进行处理,那么,是的,这是必要的(如果你不想把你的头发拉出来).窗口管理器必须在X11协议级别工作,因此使用"高级别"的东西只会让您的生活变得困难.事实上,XCB的创建恰恰是因为Xlib太高级,掩盖太多,所以很容易出错,并且很难或不可能完全控制.(另外,从X的角度来看,XCB并不"非常老";只是在最近几年,所有主要的Linux发行版才最终完全使用XCB.)


Zub*_*zub 5

这是一个迟到的答案,所以也许它不再具有太大的相关性,但无论如何我都会发布它,因为其他人可能正在寻找它......

我问过自己同样的问题,得出的结论是不存在这样的东西,尤其是在 Java 中。虽然某些小部件工具包,如 qt,为您提供了使用现有显示结构并从现有 xlib 窗口句柄创建小部件的可能性,但您仍然必须使用 xlib/xcb 来完成与 X 服务器通信的讨厌工作wm 具体操作。其他库,如其他人所说,如 GDK 和启蒙也提供了相当不错的基本抽象工作。

尽管如此,我对所有这些都使用 C/C++ 并坐在我懒惰的屁股上等待有人用 Java 为我完成工作的事实并不满意,我开始编写自己的库,允许您用 Java 构建您自己的模块化 WM。 https://github.com/Zubnix/trinityshell