I3:改进的平铺窗口管理器

2020-12-16 17:47:59

i3是一个平铺窗口管理器,完全从头编写。目标平台是GNU / Linux和BSD操作系统,我们的代码是BSD许可下的免费和开源软件(FOSS)。 i3主要针对高级用户和开发人员。根据我们想要破解/修复wmii时的经验,我们就i3达成了以下目标:

编写易读,文档齐全的代码。通过解释i3的内部工作方式,创建有关如何扩展i3的其他文档。这包括由知道如何编程但不一定熟悉X11内部所有知识的人修改。也就是说,记录发生事情的原因以及发生的时间,以便用户只需阅读源代码就可以了解Window Manager负责的整个过程。

使用xcb而不是Xlib。 xcb的API更加简洁,在很多情况下都应该更快。

正确地实现多监视器,即通过将每个工作区分配给一个虚拟屏幕。尤其要确保在操作过程中安装和拆卸新的显示器(如视频投影仪)都可以正常工作。还为旋转的显示器提供支持。

使用树作为数据结构。与其他窗口管理器使用的基于列的方法相比,这允许更灵活的布局。

实现不同的模式,例如在vim中。在调整大小时,您可以使用不同的键绑定。例如,您可以使用默认模式。

为其他程序实现IPC接口。提供对某些事件的订阅并接受命令。这种方法应该比wmii使用9P文件系统更轻便。此外,核心功能不依赖于单独的程序,因此i3的运行速度更快,尤其是在系统处于负载状态时。

最小限度的窗口管理器中常见的精英主义:不要肿,不要花哨(简单的边框是我们想要拥有的最多装饰)。 但是,我们不会强制执行不必要的限制,例如最大数量的源代码行。 如果需要更大一点,那就可以了。 除了这些既定目标外,在考虑对项目的贡献时,我们将尽力保持以下价值: 切勿破坏配置文件或现有工作流程。 重大更改需要主要版本变更(v4→v5)。 降低心理复杂度:一旦您了解i3的主要功能,其他功能就应该易于理解。 仅添加使许多人受益的功能,而不是花大力气支持很少使用的工作流程。