简介
组合窗口管理器(compositing window manager)是计算机图形用户界面的一个组 件,它负责绘制窗口和边界,同时也控制它们相互之间的交互和显示时的层次关 系。组合窗口管理器和其他窗口管理器的不同在于不是所有程序都输出输出到同一 个屏幕上,而是每个程序先各自输出到一个 buffer 中,窗口管理器将这些 buffer 组合,再输出到屏幕上。这样,每个程序都是一个独立的 2D 或者 3D 对象。
组合可以实现高级的视觉效果,比如透明(transparency)、淡入淡出(fading)、 缩放(scaling)、复制(duplicating)、弯曲(bending)、扭曲(contorting)、拖 曳(shuffling)、重定位应用(redirecting applications)等。3D 的引入可以实 现窗口的阴影、距离和深度、窗口缩略图、复杂动画等效果。
目前,最流行的组合窗口管理器有微软 Windows 的 Desktop Window Manager, Mac OS X 的 Quartz Compositor,Linux 的 Compiz, Metacity 和 Kwin。
历史
2001年3月24日,第一个使用组合窗口管理器的操作系统 Mac OS X 10.0 发布, 它提供了 Quartz 组件,组合功能完全由软件实现,不支持硬件加速。
2002年8月13日,Mac OS X 10.2 和 Quartz Extreme 发布,组合功能移到显卡 中由硬件完成。
在 X Window 系统中,要实现组合窗口管理器需要对 X Window 做一些重新设计。 Metacity 2.8.4 是第一个 X Window 系统的组合窗口管理器,于 2004 年 8 月 发布,后来被 GNOME 采用。第一个众所周知的 X Window 组合窗口管理器是 Xfwm,它是 Xfce 桌面环境的一部分,于 2005 年发布。后来 KDE 的 KWin 也 提供了对组合功能的支持。2005年1月26日 Compiz 发布,为 Linux 平台提供了 全硬件加速的 3D 组合功能。
在 2003 年的 WinHEC 会议上,微软 Windows Longhorn 的组合窗口管理器 Desktop Window Manager 第一次被提出。然而由于 Windows Vista 发布的推迟, Windows 一直没有组合功能,直到 Vista 在 2007 年 1 月发布。
基本的 2D 组合
窗口是天生的 2D 平面对象,因此,窗口管理器主要在 2D 下工作。当把窗口管 理器从 2D 扩展到 3D 或者创建 3D 效果时就会遇到问题。
比如,在 metacity 中,窗口单独绘制,然后加到桌面中,因此即使是窗口的隐 藏部分也会被绘制。2D 组合窗口管理器的输出没有深度,阴影等效果非常不真 实。
组合窗口管理器通常依赖于 X Server 的 "Composite" 扩展,组合窗口管理器 通过这个扩展使用硬件加速。
尽管不是十分明显,但与传统的 stacking 窗口管理器相比,2D 组合窗口管理 器为窗口系统带来了一些更真实的效果,如窗口透明等。
3D 组合窗口管理器
近来,几个带 3D 加速的组合窗口管理器成为主流,如 Compiz, Compiz Fusion, Desktop Window Manager。Mac OS X 自 10.0 版本以来一直使用组合 窗口管理器 Quartz Compositor。
OpenGL 或者 DirectX 在一些组合窗口管理器中使用,以将一些绘制工作移交给 显卡完成。第一个使用这个技术的是 Mac OS X 10.2,在 Linux 平台上是 Luminocity 。到了 2008 年,使用 OpenGL 的组合窗口管理器包括 Compiz,Beryl 和 Quartz Compositor。Desktop Window Manager 使用了 DirectX 9。
Linux
对于 Linux/Unix 平台,完全 3D 的硬件加速组合功能依赖于 X11 的几个体系 结构改变。这些改变允许图形环境的一部分直接在显卡上运行。最初,许多基于 OpenGL 的 X11 实现被开发出来,如 Xgl,它使用 OpenGL 提供为窗口管理器提 供全 3D 环境。后来,AIGLX 取代了 AIGLX,它支持窗口管理器通过 DRI 在标 准的 X server 上做 3D 硬件加速的组合。当前,NVIDIA、Intel 和 ATI 都支 持 AIGLX。
Linux 平台上,Compiz 名气最大,它提供了很多令人印象深刻的 2D 和 3D 效 果。
Microsoft Windows
2006年11月发布的 Windows Vista 通过 Desktop Window Manager 为微软的 Windows 平台引入了 3D 组 合能力。
在三个最流行的主流桌面从操作系统中 (微软Windows,Mac OS X,Linux),微 软的 Windows 是最后一个引入组合窗口管理器的。尽管在 WinHEC 2003 上, Longhorn 的组合器曾经被提出,但 Windows Vista 的延期发布使原来的计划推 迟了若干年。
可用性考虑
组合窗口管理器不但具有绚丽的可视效果、更快的速度,而且在计算机可用性上 也有它的作用。窗口系统的本质是通过提供一些窗口部件来改善计算机的可用性。 通过使用组合和 3D ,窗口部件的质量可以被提高,从而计算机的可用行得到改 善。
放大镜
屏幕放大镜可以让用户快速方法屏幕的某一个区域,这可以使文字更加清晰,从 而可以从远处观看或者便于视力不好的用户观看。Compiz 的 fish eye 和桌面 放大效果就提供了这个功能。这些效果可以非常容易的使用键盘和鼠标进行调整。
除了让视力不好的用户受益,放大镜放大区域也能使得普通用户更容易将注意力 集中在屏幕的一个区域中,而且大号的文本可减小眼睛的压力。
窗口切换
用户通常同时打开多个应用,由于窗口的名字无法全部显示,所以用户不可不记 住应用程序在任务栏的位置。当很多窗口同时被打开时,这个问题就更加严重。
Compiz, Windows Vista, Mac OS 现在都提供了很多改善使用户更容易在运行 的程序中进行选择,比如切换应用时,应用程序的窗口预览功能可以帮助用户迅 速找到需要的程序。
Mac OS X 系统会把所有的窗口缩小依此排列在屏幕上,使得用户可以全部看到它们,迅速做出选择。
另外,Linux 和 Windows Vista 都提供了 Flip switcher,它使用户使用鼠标 和键盘在多个应用窗口中翻页遍历,从而迅速找到想要的窗口。
widgets 层
Linux 和 Mac OS 都提供了 widget 层,Widget 层使经常使用的功能和应用快 速启动和访问。在 Mac OS 上,经常使用的时钟、记事本和计算器可以一键启动。
在 Compiz 中,widget 层最初是空的,用户可以将自己经常使用的程序放到 widget 层上来。
Windows Vista 也通过 Widows sidebar 提供了类似功能。
变换和其它特效
在现实世界中,桌面的纸张不会突然消失,抽屉不会一下子就抽出。对很多用户 来讲,窗口的快速移动和突然消失出现会让他们很疑惑。
一些效果在用户体验方面是非常有效的。比如,窗口不是突然出现或者消失,而 是淡入淡出;在最小化时渐渐的缩小到任务栏;菜单渐渐的滑出菜单栏等等。
这些效果除了可以提高普通人的用户体验,也可以为视力不好的人或者老人改善 计算机的可操作性。
现有的组合窗口管理器
- Compiz
- xcompmgr
- Microsoft Windows 的 Desktop Window Manager 和 Windows Aero user interface
- KDE 的 KWin (从 4.0 版本开始)
- GNOME 的 Metacity (从 2.14 版本开始)
- Xfce 的 Xfwm (从 4.2 版本开始)
使用组合窗口管理器的操作系统
- AmigaOS 4.1
- Linux - under XOrg/AIGLX or Xgl
- OpenSolaris
- Mac OS X 10.0 及其后续版本
- MorphOS 2.0 机器后续版本
- Windows Vista, Windows Server 2008 (可选组件)