简述 Ubuntu Unity 桌面下窗口切换机制

任务切换

任何操作系统的用户界面的一个关键部分是如何使用户能够在多个 任务之间切换。在大多数桌面操作系统的任务封装到窗口,最常用的方法是多任务窗口切换。桌面操作系统有多个窗口切换方式(如ALT-TAB,点击图标,利 用通知区域等...),但是窗口切换的最常见的手段是通过使用不同名称的启动器,任务栏或坞(Dock)。传统设计是一个任务对应一个窗口。


(在Ubuntu Hardy Heron 使用GNOME2,每一个窗口对应一个任务栏图标)

在Windows XP中,微软推出了一个叠加的窗口图标,把属于相同应用程序的的多个窗口显示为一个图标。这种任务切换机制的设计,主要是针对用户要使用了过多任务,打开 了 大量的应用程序,超出了任务栏的窗口可显的空间,这项功能只会才会执行。它有很多好处,如窗口数量很大时,而任务栏的空间虽有限,却可以舒适地完成任务切 换,用户无需在一个拥挤的任务栏上左右查看,找出要切换的程序,节省了时间和精力。只是在这种切换设计下,如果一个窗口不是最近使用的话,要增加一次额外 的点击。

Windows XP桌面
(WindowsXP的桌面,一个任务栏图标显示同一程序的多个窗口)


Unity 桌面的窗口切换功能

2009年,Unity桌面设计工作开始,我们认为任务窗口切换是用户界面的设计重点之一,我们试图设计一个新的窗口切换机制,能超越任何现代的操作系 统,包括Windows 7和雪豹OSX。我们称之为"Launcher"(启动器)和"Spread"(扩展预览)。

在Ubuntu 11.04发布之前,“Spread”的设计并测试完成。但不幸的是,设计Unity桌面还有其他大量的项目要完成,我们不得不暂时决定推迟此The Spread窗口切换功能的开发,只好在该版本中使用Compiz的切换功能。

Ubuntu的11.04桌面
(Ubuntu 11.04中的Compiz窗口切换)

我们为了能如期发布11.04,暂时使用Compiz窗口切换功能,可是窗口切换功能还有很多改善的方法。11.04发布之后,邮件列表和论坛帖子反应了很多Bug,并提出了很多建议。我们经常收到的要求包括:

  • 窗口与窗口之间很难辨认,所有的终端看上去都一样难以区别。
  • 快捷键和方向键更容易选择需要的窗口。
  • 我想是从窗口切换视图中轻易地关闭窗口。
  • 在窗口切换视图中,能否更清楚地看到当前显示的窗口是属于哪个程序?
  • 我觉得很难辨认出,在窗口切换视图中哪个是我当前使用的窗口,这点是否可以得到改善?
  • 能否使窗口切换速度更快?

窗口切换的要求

通过研究的窗口切换的问题和使用反馈,窗口切换功能需要更多改善,我们提炼出一套设计方案。如下:

  • 为了帮助识别窗口,窗口预览应该是尽可能大,以最大限度地利用可显的屏幕。
  • 窗口切换对新用户要非常直观和易于理解。在用户测试中,对从之前未使用过Ubuntu的新用户,必须是能够切换方便地切换窗口而不会遇到任何困难。
  • 应为有经验的老用户提供超快速的窗口切换方法。
  • 应提交的所有信息只是与窗口切换相关,但没有多余的干扰信息。
  • 窗口切换机制应遵循的活动窗口和任务程序的层次结构,以减少辨认所需应用程序窗口的切换时间。支持数量极大的多任务窗口切换,简化窗口启动顺序的问题。最有效的利用可显屏幕。

“The Spread” 切换功能简介

现在,Ubuntu 12.04发布在即,我们已经对Spread的原始设计代码进行清理,对它将来在Ubuntu 12.10版中的发展有一个清晰的目标。让我们先预览具体有哪些吧。

当 用户点击Firefox的图标时,如上图,可显示所有打开的多个Firefox窗口。所有的可显屏幕让预览的窗口尽可能最大化。指针移到任何一个预览图 示,将显示该窗口的标题栏的名称,并显示一个关闭按钮,点击立即关闭该窗口。当用户在这个程序预览中,也可以直接通过点击,立即启动并击切换到其他正在运 行的应用程序。

除了通过鼠标或触摸板指向和点击鼠标外,用户可以手指不离开键盘,执行所有的窗口切换。按住超级键,就会发现启动器预览窗口的每个图标都叠加显示的数字。

按下所指示的数字,相当于立即执行相当于鼠标左击的命令。而且,如果一个应用程序已经打开,按下它上面叠加的数字,将扩展显示它所有打开的多个窗口。

当 扩展显示该程序时,叠加的数字将显示在预览窗口的左下角。按下所需的窗口数字,立即选中相应的窗口,并关闭"The Spread"(窗口扩展切换器)。综上所述,用户只需使用Super键和数字键就可以方便快速地切换到任何应用程序的任何窗口。此外,用户还将可以使用 方向键,移动橙色的外框,选择目标窗口,按Enter执行即可切换。

另一个新特点是通过“Ghost Window”(虚拟窗口)来新建当前应用程序窗口。以前,如果用户想在一个已经运行的程序上新建一个窗口,他们会使用Ctrl + N或用中键点击程序启动器的图标。但是,一些新用户很难发现这些简便的操作方法。当使用"The Spread"时,用户可以点击或选择“Ghost Window"(虚拟窗口),新建当前应用程序的新窗口。这项功能在多显示器的情况下的好处更多。另外,如果应用程序不支持多个窗口运行,那么“The Spread”将不显示此选项。

其他功能还包括通过输入文字来过滤窗口...

当然,还包括按Super + W键显示所有已打开的窗口。


多显示器,多工作区,及其他细节

本 文旨在简单介绍“The Spraed”的功能,只是它设计的冰山一角。它如何在多显示器和(或)多工作区的环境工程,如何切换程序?我们已经提出很多创意,如果你对“The Spread”有兴趣,想了解它的每一项功能如何实现和处理,请访问Unity SwitchingThe Toolkit 页面延伸阅读。

原文Trackback: By @ http://design.canonical.com/2012/03/task-switching-in-ubuntu-and-a-introduction-to-the-spread/

, 相关的文章: