电脑技术学习

理解FreeBSD中的图形界面X系统

dn001

  X的设计哲学:很像 Unix 的设计哲学, “tools, not policy。这就意味着 X 不会试图去规定任务应该如何去完成,而是,只给用户提供一些工具,至于决定如何使用这些工具是用户自己的 事情。 这套哲学扩展了 X,它不会规定窗口在屏幕上应该是什么样子,要如何移动鼠标,什么键应该用来切换窗体 (比如, Alt+Tab按键,在 Microsoft Windows 环境中的作用), 每个窗口的工具条应该看起来像什么,他们是否应该有关闭按钮等等。 实际上,X 行使了一种叫做 “窗口管理器的应用程序的职责。有很多这样的程序可用: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker,等等。每一个窗口管理器 都提供了不同的界面和观感;其中一些还支持 “虚拟桌面;有一些允许您可以定制一些键来管理您的桌面; 一些有“开始 按钮,或者其他类似的设计;一些是 “可定制主题的(themeable), 通过安装新的主题,可以完全改变外观。 这些以及很多其他的窗口管理器, 都可以在 Ports Collection 的 x11-wm 分类目录里找到。 另外,KDE 和 GNOME 桌面环境都有他们自己的窗口管理器 与桌面集成。 每个窗口管理器也有不同的配置机制;有些需要手工来写配置文件, 而另外一些则可以使用 GUI 工具来完成大部分的配置任务,至少 (Sawfish) 有一个用 Lisp 语言来写的配置 文件。

  焦点策略: 窗口管理器的另一个特性是鼠标的 “focus policy。每个窗口系统都需要有一个选择窗口的方法来接受键盘的输入信息,以及当前哪个窗口处于可用状态。 您通常比较熟悉的是一个叫做 “click-to-focus 的焦点策略。 这是 Microsoft Windows 使用的典型焦点策略,也就是您在一个窗口上点击 一下鼠标,这个窗口就处于当前可用的状态。 X 不支持一些特殊的焦点策略。而是,窗口管理器控制着在什么时候哪个窗口拥有焦点。不同的窗口管理器支持不同的焦点方案。它们都支持点击即获得焦点,而且它们中的大多数都支持好几种方案。 最流行的焦点策略: focus-follows-mouse, 鼠标指示器下面的窗口就是获得焦点的窗口。这可以不是位于其他所有窗口顶部的窗口。您可以通过将鼠标移到另一个窗口就可以来改变焦点,您不需要在它上面点击。 sloppy-focus, 这种方式是对 focus-follows-mouse 策略的一个小小扩展。对于 focus-follows-mouse,如果您把鼠标移到了根窗口(或桌面背景)上, 则所有的其它窗口都会失去焦点,而相关的全部键盘输入也会丢失。 对于 sloppy-focus,只有当指针在键入一个新窗口时,窗口焦点才会发生变化,当退出当前窗口时是不会变化的。 click-to-focus, 当前窗口由鼠标点击来选择。窗口被“突出显示 ,出现在所有其他窗口的前面。即使指针被移向了另一个窗口,所有的键盘输入仍会被这个窗口接收。 许多窗口管理器支持其他的策略,与这些相比又有些变化。您可以看具体窗口管理器的文档。

  提供工具而非策略的X方法:使得在每个应用程序屏幕上看到的窗口部件得到了 大大的扩展。 “Widget 只是针对用户接口中所有列举项目的一个术语,它可以用某种方法来点击或操作;如按钮,复选框,单选按钮,图标,列表框等等。 Microsoft Windows 把这些叫做“控件。 Microsoft Windows 和苹果公司的 Mac OS 都有一个严格的窗口部件策略。应用程序开发者被建议确保他们的应用程序共享一个普通的所见即所得的用户界面。 对于 X,它并不要求一个特殊的图形风格或一套相结合的窗口部件集。 这样的结果是您不能期望 X 应用程序只拥有一个普通的所见即所得的界面。有很多的流行的窗口部件集设置,包括来自于 MIT 的 Athena, Motif® (模仿 Microsoft Windows 的窗口风格, 所有部件都具有斜边和3种灰色度), OpenLook,和其他一些窗口部件集。 如今, 绝大多数比较新的 X 应用程序将使用一组新式的窗口设计, 包括 KDE 所使用的 Qt, 以及 GNOME 所使用的 GTK+。 在这样一种窗口系统下,UNIX 桌面的一些所见即所得特性作了一些收敛, 以使初学者感到更容易一些。

标签: