17

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

XLib 和 xcb 并不是很讨厌,至少不是按照例如 win32 标准,但它们绝对是非常古老的,并且不能很好地适合体面的抽象来让我的生活更轻松。不仅如此,现代高级语言明显缺乏良好的绑定。

我的问题是:现在这些低级的东西真的有必要吗?是否存在可以为我封装所有讨厌的东西的库?我有一个模糊的记忆,启蒙运动的人做过这样的事情,但是什么也找不到。或者像 GDK 这样的现代小部件库是否有足够的功能,我不需要接触 Xlib 层?

任何具有 Java 绑定的库都特别令人感兴趣...

4

2 回答 2

9

现在这些低级的东西真的有必要吗?

如果您所说的“低级东西”是指 C 语言,那么不,从技术角度来看,这不是必需的;您可以使用 XCB 的XML为任何语言生成绑定。

但是,如果您所说的“低级别的东西”是指在 X 协议级别进行处理,那么,是的,这是必要的(如果您不想把头发拉出来)。窗口管理器必须工作在 X11 协议级别,所以使用“高级”的东西只会让你的生活变得困难。事实上,XCB 的诞生正是因为 Xlib 太高级,隐藏太多,容易出错,难以或不可能完全控制。(此外,从 X 的角度来看,XCB 并不是“非常古老”;直到最近几年,所有主要的 Linux 发行版才最终开始全面使用 XCB。)

于 2011-04-28T02:27:36.173 回答
5

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

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

尽管如此,我对所有这些都使用 C/C++ 并坐在我懒惰的屁股上等到有人用 Java 为我完成工作不是一种选择感到不满意,我开始编写自己的库,让你可以用 Java 构建您自己的模块化 WM。 https://github.com/Zubnix/trinityshell

于 2013-01-27T16:59:04.477 回答