快捷搜索:   nginx

X windows系统使用指南(二)

第3章 从使用者介面的面貌概观X

在本章,我们将观察重点摆到系统控制的使用者介面,例如,系统如何显示有人使用它,以及包含那些结构等。

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送出所有滑鼠的事件(包括滑鼠的移动事件)到视窗管理器直到按钮再度松开,视窗管理器把这些 "事件" 的资料解释成来自使用者的指令来工作。以移动视窗为例,视窗管理器在按钮按下时被告知指标的 位置,而当按钮松开时再度被告知,对指标的位移做一些简单计算便可据以移动视窗。
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论