X Window 系统使用指南--使用者介面


在本章,我们将观察重点摆到系统控制的使用者介面,例如,系统如何显
示有人使用它,以及包含那些结构等 。
X设计的目标之一就是能支援许多不同型式的使用者介面,一般其它的视
窗系统提供特殊的交谈方法,而X则提供一般性的架构,让系统建立者
(system builder)据以建造所需的交谈的风格 。例如,在一个X系统中你可藉
从选单中选一个动作来构建视窗,但其他对视窗的操作则全靠滑鼠来做,这种
弹性允许系统开发者(developers)完全在X的基础上产生全新的介面,也因为
介面并未内建於视窗系统,因此使用者在任何时刻根据他们特别的需求可选用
适当的介面 。例如,对於完成一些相同的工作 -- 建立、移动、重定大小萤幕
上的视窗,初学者较老手喜欢简单的系统,而X可分别提供最适合他们的使用
者介面 。使用者介面分为两个部份:管理介面:命令最高层的视窗如何在萤幕上建构或重建构(re-configured),
也就是说,如何管理你的案头 。应用介面:决定你和应用程式间交谈的”风格”(style): 你如何利
用视窗系统的设备程式来控制应用程式及输入资料给它 。
3.1 管理介面:视窗管理器管理介面(management interface)是系统的一部份,用以控制你萤幕上最
上层的视窗(换句话说:如何重新建构你的案头),这个部份在系统中称之为
视窗管理器(window manager),它的功能有改变视窗的大小或位置、将视窗在
堆叠 (stack)中重新安排位置、或将视窗改变成表徵图 (icon) 等等 。在X中,视窗管理器只是另一个clIEnt程式而已,它以及系统介面的发展,
和server是完全分开的,因此你可以更换它们,这类似於Unix系统中的shell
命令列直译器(interpreter) :shell 只是一个使用者处理程式(process),
如果你改变它,你也改变了系统的使用者介面 。
3.1.1 手动的和自动的视窗管理器有两类的视窗管理器:手动的和自动的 。手动的视窗管理器,视窗在萤幕
上的位置和大小完全由使用者控制,手动的视窗管理器只是使用者用来完成工
作的工具,大部份的手动视窗管理器允许应用视窗重叠 。相对的,自动的视窗管理器尽可能的由它自己来控制案头,对於萤幕的布
置尽可能让使用者少插手 。它在新建立一个视窗时自动决定视窗的大小和位置
,和当视窗移动时如何重新安排其馀的视窗,通常自动的视窗管理器将萤幕分
成一块块像磁砖一样(tile)的区域,也就是说安排应用视窗彼此不会重叠,而
且尽量占用最多的萤幕空间 。手动的视窗管理器如何工作 -- 攫取(Grabbing)通常当你告诉手动的视窗管理器你要完成什麽动作时,是藉著使用选单或
者结合了按滑鼠的按钮和移动指标,例如,重新摆放一个视窗的位置,你可以
移动指标进入视窗,按住左边的按钮,移动指标然後在新位置松开按钮,视窗
管理器是如何知道这些滑鼠 "事件" 的意图的?或是换个角度,server是如何
知道 "事件" 是来自应用视窗或视窗管理器?答案是由视窗管理器告知server有哪些特定的 "事件" (碰触按钮等等)
需要被送达,这和哪一个视窗发生的无关,这种处理称之为攫取(Grabbing),视
窗管理器可以指定哪一个滑鼠按钮希望被攫取,而这攫取发生在滑鼠的按钮被
按下且键盘上一些特定的键(一般称为修饰键(modifer) )也被按住(例如当
CONTROL 和SHIFT 两个键被按住时且滑鼠中间的按钮被按下),当按钮被按下
时,攫取开始动作,server送出所有滑鼠的事件(包括滑鼠的移动事件)到视
窗管理器直到按钮再度松开,视窗管理器把这些 "事件" 的资料解释成来自使

推荐阅读