国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

X Window 系統(tǒng)使用指南--使用者介面

瀏覽:20日期:2024-02-02 10:54:48

在本章,我們將觀察重點(diǎn)擺到系統(tǒng)控制的使用者介面,例如,系統(tǒng)如何顯 示有人使用它,以及包含那些結(jié)構(gòu)等。

X設(shè)計(jì)的目標(biāo)之一就是能支援許多不同型式的使用者介面,一般其它的視 窗系統(tǒng)提供特殊的交談方法,而X則提供一般性的架構(gòu),讓系統(tǒng)建立者 (system builder)據(jù)以建造所需的交談的風(fēng)格。例如,在一個(gè)X系統(tǒng)中你可藉 從選單中選一個(gè)動(dòng)作來(lái)構(gòu)建視窗,但其他對(duì)視窗的操作則全靠滑鼠來(lái)做,這種 彈性允許系統(tǒng)開(kāi)發(fā)者(developers)完全在X的基礎(chǔ)上產(chǎn)生全新的介面,也因?yàn)? 介面并未內(nèi)建於視窗系統(tǒng),因此使用者在任何時(shí)刻根據(jù)他們特別的需求可選用 適當(dāng)?shù)慕槊妗@纾瑢?duì)於完成一些相同的工作 -- 建立、移動(dòng)、重定大小螢?zāi)? 上的視窗,初學(xué)者較老手喜歡簡(jiǎn)單的系統(tǒng),而X可分別提供最適合他們的使用 者介面。

使用者介面分為兩個(gè)部份:

管理介面:命令最高層的視窗如何在螢?zāi)簧辖?gòu)或重建構(gòu)(re-configured), 也就是說(shuō),如何管理你的案頭。

應(yīng)用介面:決定你和應(yīng)用程式間交談的”風(fēng)格”(style): 你如何利 用視窗系統(tǒng)的設(shè)備程式來(lái)控制應(yīng)用程式及輸入資料給它。

3.1 管理介面:視窗管理器

管理介面(management interface)是系統(tǒng)的一部份,用以控制你螢?zāi)簧献? 上層的視窗(換句話說(shuō):如何重新建構(gòu)你的案頭),這個(gè)部份在系統(tǒng)中稱之為 視窗管理器(window manager),它的功能有改變視窗的大小或位置、將視窗在 堆疊 (stack)中重新安排位置、或?qū)⒁暣案淖兂杀磲鐖D (icon) 等等。

在X中,視窗管理器只是另一個(gè)clIEnt程式而已,它以及系統(tǒng)介面的發(fā)展, 和server是完全分開(kāi)的,因此你可以更換它們,這類似於Unix系統(tǒng)中的shell 命令列直譯器(interpreter) :shell 只是一個(gè)使用者處理程式(process) , 如果你改變它,你也改變了系統(tǒng)的使用者介面。

3.1.1 手動(dòng)的和自動(dòng)的視窗管理器

有兩類的視窗管理器:手動(dòng)的和自動(dòng)的。手動(dòng)的視窗管理器,視窗在螢?zāi)? 上的位置和大小完全由使用者控制,手動(dòng)的視窗管理器只是使用者用來(lái)完成工 作的工具,大部份的手動(dòng)視窗管理器允許應(yīng)用視窗重疊。

相對(duì)的,自動(dòng)的視窗管理器盡可能的由它自己來(lái)控制案頭,對(duì)於螢?zāi)坏牟? 置盡可能讓使用者少插手。它在新建立一個(gè)視窗時(shí)自動(dòng)決定視窗的大小和位置 ,和當(dāng)視窗移動(dòng)時(shí)如何重新安排其馀的視窗,通常自動(dòng)的視窗管理器將螢?zāi)环? 成一塊塊像磁磚一樣(tile)的區(qū)域,也就是說(shuō)安排應(yīng)用視窗彼此不會(huì)重疊,而 且盡量占用最多的螢?zāi)豢臻g。

手動(dòng)的視窗管理器如何工作 -- 攫取(Grabbing)

通常當(dāng)你告訴手動(dòng)的視窗管理器你要完成什麼動(dòng)作時(shí),是藉著使用選單或 者結(jié)合了按滑鼠的按鈕和移動(dòng)指標(biāo),例如,重新擺放一個(gè)視窗的位置,你可以 移動(dòng)指標(biāo)進(jìn)入視窗,按住左邊的按鈕,移動(dòng)指標(biāo)然後在新位置松開(kāi)按鈕,視窗 管理器是如何知道這些滑鼠 '事件' 的意圖的?或是換個(gè)角度,server是如何 知道 '事件' 是來(lái)自應(yīng)用視窗或視窗管理器?

答案是由視窗管理器告知server有哪些特定的 '事件' (碰觸按鈕等等) 需要被送達(dá),這和哪一個(gè)視窗發(fā)生的無(wú)關(guān),這種處理稱之為攫取(Grabbing),視 窗管理器可以指定哪一個(gè)滑鼠按鈕希望被攫取,而這攫取發(fā)生在滑鼠的按鈕被 按下且鍵盤上一些特定的鍵(一般稱為修飾鍵(modifer) )也被按住(例如當(dāng) CONTROL 和SHIFT 兩個(gè)鍵被按住時(shí)且滑鼠中間的按鈕被按下),當(dāng)按鈕被按下 時(shí),攫取開(kāi)始動(dòng)作,server送出所有滑鼠的事件(包括滑鼠的移動(dòng)事件)到視 窗管理器直到按鈕再度松開(kāi),視窗管理器把這些 '事件' 的資料解釋成來(lái)自使 用者的指令來(lái)工作。以移動(dòng)視窗為例,視窗管理器在按鈕按下時(shí)被告知指標(biāo)的 位置,而當(dāng)按鈕松開(kāi)時(shí)再度被告知,對(duì)指標(biāo)的位移做一些簡(jiǎn)單計(jì)算便可據(jù)以移 動(dòng)視窗。

有一件事需要使用者配合,那就是滑鼠和修飾鍵組合而成的攫取不應(yīng)該為 應(yīng)用程式所知道,所以必需確定視窗管理器這種攫取鍵的組合不會(huì)和應(yīng)用程式 沖突,大多數(shù)的視窗管理器可以很容易的定義這些攫取的組合鍵,而保留給它 自己使用。

3.1.2 視窗管理器額外提供的功能

視窗管理器除了具有重新建構(gòu)視窗的基本功能外,也提供額外的功能改進(jìn) 介面的品質(zhì),通常,加入額外功能的目的是為了降低鍵盤輸入的需要,而改成 盡量多用指標(biāo)。

一個(gè)常見(jiàn)的功能是提供一個(gè)你自己可以建構(gòu)的一般性選單,這樣你只要選 取一個(gè)選單選項(xiàng)便可啟動(dòng)視窗應(yīng)用程式。這個(gè)啟動(dòng)的命令通常包含了指示應(yīng)用 視窗在何處出現(xiàn),大小多少,本文用什麼顏色等等。所以應(yīng)用程式不需要太多 的使用者輸入便能啟動(dòng)。一個(gè)常見(jiàn)的選單用法為當(dāng)你在網(wǎng)路上工作時(shí),你可以 定義一個(gè)選單列出所有你在網(wǎng)路上可用的主機(jī),如此你便可藉著在選單上選擇 主機(jī)名稱便能和任一主機(jī)建立連接。

3.1.3 視窗管理器和表徵圖

當(dāng)一個(gè)視窗轉(zhuǎn)換成一個(gè)表徵圖時(shí),表徵圖是如何來(lái)的?視窗又發(fā)生了哪些 事?

表徵圖的結(jié)構(gòu)非常的簡(jiǎn)單,它只是視窗的代表圖案,當(dāng)系統(tǒng)表徵圖化(iconify) 一個(gè)應(yīng)用視窗,視窗管理器只是不對(duì)應(yīng)出(unmap) 這視窗(也就是說(shuō),告訴 server不再顯示這個(gè)視窗到螢?zāi)簧希┒驯磲鐖D視窗對(duì)應(yīng)出來(lái)。解除表徵圖化 (deiconify)則把上述的處理反過(guò)來(lái)。視窗管理器可以辦得到的原因是它沒(méi)有” 存取控制”(access control)或許可限制來(lái)防止一個(gè)client(例如視窗管理器) 不對(duì)應(yīng)出其它的client的視窗,所有在同一個(gè)server上的client都可以對(duì)任意 視窗或多或少做一些動(dòng)作。

視窗管理器通常提供預(yù)設(shè)的表徵圖,但是client可以提供它自己的表徵圖 并建議使用它,有些視窗管理器接受這個(gè)要求,有些則忽略不接受仍用自己的 表徵圖,只把這個(gè)需求當(dāng)作給視窗管理器的暗示(hint)。

當(dāng)應(yīng)用程式被表徵圖化,它的主視窗便不再被對(duì)應(yīng)出來(lái),如果視窗管理器 因任何理由中斷了,則這個(gè)視窗永遠(yuǎn)也無(wú)法再對(duì)應(yīng)出來(lái)了。要避免這點(diǎn),當(dāng)視 窗管理器表徵圖化一個(gè)視窗時(shí),它把這個(gè)視窗加入一個(gè)名為save set的名單□ ,這個(gè)名單由server負(fù)責(zé)維護(hù),如此當(dāng)視窗管理器被中斷時(shí)便可重新對(duì)應(yīng)出來(lái)。

3.1.4 應(yīng)用程式傳遞建構(gòu)資訊給視窗管理器

就如同要求顯示一個(gè)特定的表徵圖一般,應(yīng)用程式也能傳遞其它的暗示或建 構(gòu)資訊給視窗管理器,這包括:

. 應(yīng)用程式和表徵圖視窗的名稱。

. 當(dāng)應(yīng)用程式和表徵圖視窗被建立時(shí),它們?cè)谖災(zāi)簧衔恢玫馁Y訊。

. 對(duì)視窗大小的限制(例如,client可以宣告”我所占用的視窗大小絕不 可小於寬度若干x 長(zhǎng)度若干”)。

. 對(duì)視窗重定大小的特別要求(例如,一個(gè)顯示本文的視窗,可以要求在 重定大小時(shí)按特定的間隔放大或縮小,以使得視窗內(nèi)的字元永遠(yuǎn)是完整 的一個(gè),不致視窗邊框的那一行 (列) 有半個(gè)字的情況出現(xiàn)。)。

這種將訊息傳遞給視窗管理器的結(jié)構(gòu)稱之為性質(zhì)結(jié)構(gòu)(property mechanism), 下一節(jié)我們會(huì)討論它。

我們可以注意到大部份重定大小或表徵圖化的事是由視窗管理器做的,這 是因?yàn)樗且粋€(gè)公有的client,任何client均可隨意重定大小,但如果所有client 都這樣做,便會(huì)造成混亂,因此要這些應(yīng)用程式和平共存的原則是:不要自行 重定大小,把它交給視窗管理器,也就是讓使用者去決定。

在第6章中我們會(huì)看到一個(gè)視窗管理器uwm 如何使用。

3.2 應(yīng)用程式介面和工具箱

應(yīng)用程式介面決定了使用者和應(yīng)用程式間交談的風(fēng)格,舉例來(lái)說(shuō),如何用 指標(biāo)選一個(gè)選項(xiàng)等,X不提供標(biāo)準(zhǔn)的應(yīng)用程式介面,只提供基本的結(jié)構(gòu)以便建 造它們。

當(dāng)那些具有一貫性的應(yīng)用程式介面被放在一起,便叫做工具箱(toolkit), 它是基礎(chǔ)視窗系統(tǒng)軟體中最高最有效率的層次,較低層次的細(xì)節(jié),被隱藏起來(lái), 因此簡(jiǎn)化程式和維持介面的一貫風(fēng)格變得容易執(zhí)行,當(dāng)使用者控制應(yīng)用程式時(shí) 好像有一套”虛擬文法(virtul grammer)”一般,需要注意很重要的一點(diǎn)是, 工具箱在編譯程式的時(shí)候被指定,所以一個(gè)client的應(yīng)用程式介面在編譯的時(shí) 候就被決定了,如果不重新編譯便無(wú)法改變。

MIT 版的X大多數(shù)的應(yīng)用程式均使用標(biāo)準(zhǔn)的工具箱和一套來(lái)自MIT 的工具 箱軟體構(gòu)成要素,這造成你可以得到一致性的介面。除此之外,有些結(jié)構(gòu)更提 供了定制的應(yīng)用程式操作方法和設(shè)定它們的預(yù)設(shè)值。

3.3 其它的系統(tǒng)面貌

在本節(jié)中,我們討論將應(yīng)用程式之間傳遞資訊所用的性質(zhì)結(jié)構(gòu)(property mechanism),視窗的樹(shù)狀階層組織,和X不包含在作業(yè)系統(tǒng)中的優(yōu)點(diǎn)。

3.3.1 client之間的通訊 -- ”性質(zhì)”

client和server之間的通訊是藉著送出 '需求' 和接收 '事件' ,但有時(shí) client需要和其它的client傳遞資訊,例如,正常的應(yīng)用程式需要告訴視窗管 理器它的位置和大小,這就需要X的性質(zhì)結(jié)構(gòu)了。

”性質(zhì)”是一小段資料的名稱,這一小段資料存在server中且關(guān)聯(lián)到一個(gè) 特定的視窗,任何client均可向server查詢某一特定視窗”性質(zhì)”的值。

讓我們看一個(gè)client如何把它所喜歡的表徵圖名稱傳遞給視窗管理器的□ 例:client把表徵圖名稱存到這個(gè)視窗的WIM_ICON_NAME ”性質(zhì)”去,當(dāng)視窗 管理器執(zhí)行表徵圖化這個(gè)應(yīng)用視窗時(shí),它會(huì)去找這個(gè)應(yīng)用視窗的WIM_ICON_NAME 的”性質(zhì)”,而後顯示”性質(zhì)”中的表徵圖名稱。

應(yīng)用程式也可以和不是視窗管理器的其它的應(yīng)用程式通訊,一個(gè)常見(jiàn)的例 子是在分屬不同應(yīng)用程式的視窗之間做剪貼(cut-and-paste) 操作,一段本文 從一個(gè)應(yīng)用程式中”切下”(cut) 稍後再”貼”到另一個(gè)應(yīng)用視窗,”性質(zhì)” 在此被用到,”性質(zhì)”依序編成”CUT_BUFFER0”,”CUT_BUFFER1”…等等, 所有的應(yīng)用視窗便可藉此交換資料。

最後一個(gè)例子是稱為resources 的”性質(zhì)”,它被用來(lái)定義應(yīng)用程式的預(yù) 設(shè)值設(shè)定,在根視窗(root window) 中有一個(gè)名為RESOURSE_MANAGER的性質(zhì)存 放著所有設(shè)定的名單,它會(huì)被所有的應(yīng)用程式存取,用來(lái)做是否要執(zhí)行任何設(shè) 定的依據(jù)。

3.3.2 在X中視窗的階層性

本節(jié)描述視窗在系統(tǒng)中的組織及如何建立,和對(duì)應(yīng)用程式的影響。

所有在X中的視窗都可視為一個(gè)樹(shù)狀結(jié)構(gòu)階層 (hierarchy)的一部份,樹(shù) 的根部便是根視窗,涵蓋了整個(gè)螢?zāi)唬瑧?yīng)用視窗都是根視窗的子代(children), 上層的視窗可以擁有它自己的子視窗,圖3-1 有兩個(gè)應(yīng)用視窗。

┌———————————————┐ │ p34 fig 3.1 (???) │ │ │ │ 圖3-1 在螢?zāi)簧现丿B的視窗 │ └———————————————┘

”paint ”程式包含了一個(gè)被當(dāng)做選單用的子視窗,對(duì)每一個(gè)選擇又有一 個(gè)子視窗對(duì)應(yīng),相關(guān)的視窗樹(shù)見(jiàn)圖3-2 。

┌———————————————┐ │ p35 fig 3.2 │ │ │ │ 圖3-2 視窗的樹(shù)狀結(jié)構(gòu)階層 │ └———————————————┘

在X的設(shè)計(jì)理念下,制造一個(gè)視窗非常容易,你可以利用視窗來(lái)控制選項(xiàng) ,像選單、卷動(dòng)棒(scrollbars)、控制鈕(control button)等等,即使是大量 也無(wú)妨,例如像試算表中的一個(gè)cell等。這種觀點(diǎn)從程式設(shè)計(jì)師的角度大於使 用者,但的確對(duì)使用者當(dāng)他”定制”(customising) 特定的程式時(shí)有影響,在 本章以後的章節(jié)會(huì)再度提到。

為了允許應(yīng)用程式有子視窗,X提供了大量的設(shè)備程式供client程式使用, 如此不但能達(dá)成一致性,也避免了相同的需求造成了重復(fù)的工作,例如像圖3-1 的下拉式選單,可以在應(yīng)用程式中以一致子視窗完成,這個(gè)子視窗有它們自己 的選單選擇方框(pane),和用以偵測(cè)使用者碰觸滑鼠按鈕的標(biāo)準(zhǔn)結(jié)構(gòu),如果沒(méi) 有子視窗,復(fù)雜的程式和輸入處理將無(wú)可避免。

子視窗的位置和大小并不受父視窗的限制,子視窗可大可小,可以大過(guò)父 視窗或只占父視窗的一部份,但是它會(huì)被父視窗剪裁(clipped) ,也就是說(shuō), 子視窗所有超出父視窗的部份將會(huì)消失不見(jiàn)。見(jiàn)圖3-3

┌———————————————┐ │ p36 fig 3.3 (???) │ │ │ │ 圖3-3 受父視窗限制的子視窗 │ └———————————————┘

在實(shí)際的應(yīng)用上,你可以將上層的視窗定義成幾乎占住整個(gè)螢?zāi)唬筒槐? 擔(dān)心子視窗有些部份會(huì)看不到了。

另外一種方式就是把下拉式選單定義成為根視窗的子視窗,如此選單便可 以比應(yīng)用視窗還大,如圖3-4

┌————————————————┐ │ p36 fig 3.4 (???) │ │ │ │ 圖3-4 選單比用它的應(yīng)用視窗還大 │ └————————————————┘

3.3.3 X不是深植於作業(yè)系統(tǒng)

不像其它大多數(shù)的系統(tǒng),X并非深植(embedded)於作業(yè)系統(tǒng)中,而只是比 使用者層次稍高而已。更精確地說(shuō),X不需要深植於系統(tǒng),雖然有些制造廠商 可能是為了效率(performance) 的理由將server和作業(yè)系統(tǒng)結(jié)合在一起,但不 深植於作業(yè)系統(tǒng)的結(jié)構(gòu)有下列利益:

.易於安裝和改版,或甚至去除。這種工作不需要重新啟始系統(tǒng),也不會(huì) 對(duì)其它應(yīng)用程式造成干擾。

.第三集團(tuán)很容易支援加強(qiáng)它的功能。例如你的制造廠商提供的系統(tǒng)不夠 好,你可以向別人買更好或更快的版本。

.X不會(huì)指定作業(yè)系統(tǒng),因此成為一種標(biāo)準(zhǔn),這也是第三集團(tuán)發(fā)展軟體的 原動(dòng)力。

.為了發(fā)展者利益。在server上發(fā)展工作時(shí),當(dāng)程式當(dāng)?shù)糁粫?huì)當(dāng)?shù)粢暣跋? 統(tǒng),不會(huì)造成機(jī)器的損壞或作業(yè)系統(tǒng)核心的破壞,沒(méi)有作業(yè)系統(tǒng)核心碼 的程式也較易除錯(cuò)。

3.4 結(jié)論

在本章中我們描述了許多X提供的使用者介面,我們介紹了你用以管理 案頭的程式 -- 視窗管理器的概念,也描述了被用來(lái)做使用者和client應(yīng)用程 式間交互作用的設(shè)備程式。我們介紹了用來(lái)做client間通訊的性質(zhì)結(jié)構(gòu),X視 窗的階層結(jié)構(gòu)對(duì)系統(tǒng)的影響,最後對(duì)視窗系統(tǒng)不深植於作業(yè)系統(tǒng)的好處做一摘 要。

本章所強(qiáng)調(diào)的著眼點(diǎn),在於針對(duì)你每天都用到的視窗系統(tǒng)的部份作一整體 性的概觀,了解這些將幫助你學(xué)習(xí)得更快,更能好好地運(yùn)用系統(tǒng)。

本書第一部份 -- 系統(tǒng)概觀就此結(jié)束,下一個(gè)部份將告訴你如何實(shí)際使用 系統(tǒng)。

標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 项城市| 合山市| 英吉沙县| 定南县| 万山特区| 永州市| 新津县| 深水埗区| 乌拉特前旗| 运城市| 牙克石市| 阿合奇县| 怀远县| 佳木斯市| 栖霞市| 广灵县| 古蔺县| 左权县| 商城县| 祥云县| 九台市| 常德市| 普洱| 宕昌县| 沁阳市| 肥东县| 扶余县| 博湖县| 乃东县| 塔河县| 赤峰市| 永寿县| 闽侯县| 包头市| 红桥区| 诸城市| 屯昌县| 石台县| 太白县| 天水市| 安乡县|