论文部分内容阅读
在计算机科学中,窗口管理器(Window Manger)是指一种用于在图形用户界面(GUI)中控制窗口系统(Windowing System)中各窗口位置和外观的软件。大部分的窗口管理器被用于为某种桌面环境(Desktop Enviroment)提供支持。窗口管理器一般用控件工具包(Widget Toolkit)编写而成,并且需要与其下层的窗口系统协同工作,而窗口系统则为其提供诸如图形硬件,指点设备和键盘等底层支持。本文首先介绍了当代三大桌面操作系统平台上窗口管理器的现状,并简要介绍了窗口管理器的发展历史,分析了当今窗口管理器的各种类型,特性以及功能。在三大桌面操作系统当中,X窗口系统(X Window System)是绝大部分类UNIX操作系统平台上的图形子系统。本文接着介绍了其发展历程,设计原则,并着重分析了其底层的窗口协议(Window Protocol)的通信过程和主要数据结构。传统上,几乎所有基于X窗口系统的窗口管理器都是使用Xlib作为其底层的图形程序库。但Xlib的历史久远,其在设计与实现上也都有一定的缺陷。而2001年出现的XCB,正好成为了Xlib的一个更优的替代品。在本文的后续部分中,分别对Xlib和XCB进行了介绍,分析了它们的数据类型和API函数,以及各自的优缺点,并给出了Xlib同XCB的应用程序实例,而且重点对二者请求应答往返时间的性能进行了详细的定量对比和分析,结果显示XCB的时间性能较Xlib大约高出30倍,且差距随着请求数量的增加而加大。在众多的窗口管理器之中,dwm是一种基于X窗口系统且开放源代码的动态窗口管理器。在此前提之上,dwm被选定作为代码基础,以实现一种新的窗口管理器——Heterosis。它将dwm从传统上常用的Xlib程序库移植至XCB之上,进而提高了其性能。本文在后续的部分中,描述了Heterosis的整个实现过程,包括dwm的现有设计,Heterosis的版本控制方法,逻辑流程,具体的移植方法,实现过程中所遇到的问题和解决方法,以及调试过程等等,并给出了源代码说明和清单。最后给出了对于窗口管理器在设计上的展望,以及Heterosis其今后可以改进的地方。