为 Linux 构建 3D 窗口管理器

Posted

技术标签:

【中文标题】为 Linux 构建 3D 窗口管理器【英文标题】:Building a 3D window manager for Linux 【发布时间】:2014-04-01 11:35:10 【问题描述】:

我希望了解 Linux 窗口管理器并构建自己的窗口管理器。我有两个想要满足的要求:3D 支持和与现有应用程序的良好兼容性/性能。

是否有任何窗口管理器符合这些标准并且足够轻量级以供我使用?

如果不是,我需要考虑哪些因素才能自己实施 3D 支持?我看到 Xlib 默认情况下根本不支持 3D 窗口。

编辑:Xlib 提到了 XGetGeometry,它可以得到一个 Windows 像素图。然后我可以使用 OpenGL 自己显示它,但是,这是最有效的方法吗?

【问题讨论】:

【参考方案1】:

是否有任何窗口管理器符合这些标准并且足够轻量级以供我使用?

你可以看看 Compiz 就是这样做的。它还具有插件架构。但是要注意基于 X11 的合成的缺陷、X11 本身的困境以及 Linux 图形社区的大部分人已经喝醉了 Wayland Kool-Aid。

【讨论】:

【参考方案2】:

您可能想查看Wayland。简而言之,Wayland 给每个客户端一个矩形区域来渲染事物,然后通过合成这些区域在屏幕上构建显示。

源代码应该为您提供一些想法,如何将客户端的所有输出重定向到纹理缓冲区。

【讨论】:

Wayland 不是仍然很不稳定且不受支持吗?从外观上看,可供学习的例子并不多。 您也可以通过查看 KDE 源代码来尝试找出相同的东西,但是它们要复杂得多,您甚至会花一些时间来找出您感兴趣的地方。至于“不稳定”:1.4 前段时间已经发布了。团队花了 2 年时间才走到这一步,这应该让您了解为 X 编写窗口管理器所需的工作量。 替代方案是Mir,但它面向移动设备,甚至更不稳定。 @AaronDigulla:Wayland 只是一个协议,对最终用户程序的支持并不多。是的,原则上 Wayland + Weston 将使 OP 能够做他想做的事。恕我直言,但是 Wayland 并不是一个很好的窗口管理基础设施。它的级别太低,不能作为构建加速工具包的坚实基础(需要大量代码重复,因为要求客户关心输出设备的特性)。但是,对于可以构建可扩展显示服务器的轻量级图形驱动程序基础架构而言,它的级别也太高了。

以上是关于为 Linux 构建 3D 窗口管理器的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 捕捉通常由窗口管理器处理的事件

Linux 桌面平铺管理器 - i3wm

linux lightdm gdm gnome kde等的区别于联系(桌面环境 窗口管理器 显示管理器)

我应该如何在 Qt 中编写窗口管理器?

如何在Linux系统轻松切换X窗口管理器

linux 怎样打开任务管理器