返回介绍

X 視窗系統

发布于 2024-10-04 20:45:48 字数 12419 浏览 0 评论 0 收藏 0

10.1 簡介

  1. X的簡史

    X視窗系統的發展開始於1984的麻省理工學院,它是由麻省理工學院電腦科學實驗室與雅
    典娜(Athena)計劃所贊助。因為IBM和DEC原本有參與了 Athena計劃,所以 X從一開始
    就有來自業界的支援。1986年初,DEC發表了第一套商業的X,這是含在VAXstation-
    II/GPX跑的 Ultrix作業系統裡,版本是 X version10,release 3,簡稱 X11R3。很快
    的,X吸引了其它工作站廠商的注意,像是Hewlett-Packward,Apollo
    Camputer(Apollo現已跟Hewlett-Packward合併),Sun Microsystems以及Tektronix.
    由於使用者的反應,計劃的成員重新設計了X協定,在 1986年11月,X1OR4發表了,這是
    X version10的最後一個release,之後就是X version 11了。

    1987年一月,在第一屆X技術會議舉行期間,11家主要電腦廠商宣佈了對於X11的支
    持與標準化,X11的第一個release-X11R1在1987年發表,為了確保X能在一個開
    放組織的控制下持續改進,一個非營利的組織-麻省理工學院 XConsortium 於1988年一
    月成立,在X的主要設計者-Robert W. Scheifler的領導下,XConsortium 負責推
    展 X,X視窗系統的發展控制也轉交給X Consortium。

    1988年三月,X11R2發表,1988十月底,X11R3發表,1990年一月,X Consortium發
    表 X11R4,X11R5則是接著在1991年八月。當 X在工作站的世界普及後,X
    Consortium仍不遺餘力的在許多方面改進X,包含讓 C++也可以設計 X程式,以及加
    進一個物件導向程式設計工具,叫 Fresco等等,這些都在1994年4月發表的 X11R6裡,
    X11的X協定在這些release中並沒更改,所有的加強都是經由 X協定所提供的功能,

  2. 了解X視窗系統

    X視窗系統這名詞指的是好幾個部份,這幾個部份使得在不同位元映射顯示
    上,以視窗為基礎的圖形輸出更方便。
    X的核心是X server,一個程序(process),也就是一個執行中的電腦程式,它
    控制顯示。鍵盤,滑鼠,應用程式則統稱X clients,與X server以內部程序通
    訊(interprocess communication,ipc)的機制溝通,顯示出整個輸出。X server
    和X clients之間是以一個定義好的協定,叫X protocol的通訊協定來溝通,X
    clients,X protocol,X還包含C寫成的程式庫,叫Xlib,當作與X server溝
    通的程式介面。

  3. Clients 和 Servers

    X Server 又稱為 X Terminal,簡單地說,您可以將自己眼前的螢幕,
    就看作是 X Server。在實際運作的場合上,X Server 是 X Window
    的主要核心程式,必須比 X Client 更早啟動,它負責控制螢幕、
    顯示卡、鍵盤、滑鼠等硬體設備,為使用者準備好一個「可供顯示視窗
    的資源環境」,用以等待網路上的 X Client 程式,前來提出「顯示
    要求」。簡而言之,X Server 負責顯示並處理鍵盤滑鼠的動靜 (後者
    稱為 X Event),而 X Client 負責執行並產生視窗等影像要求 (後者
    稱為 X Request)。

    在 X Window 環境中,X Request 與 X Event 傳遞的關係如下:


    X 協定?/CAPTION>

    若是您已經安裝好 Linux 系統,而且裡頭也有完整的 X Window 程式套件,
    那麼試著查看 /usr/X11R6/bin 目錄裡的檔案內容,這裡頭放置的全是
    X Window 的可執行檔或工具程式,不過,我們可以進一步將它們分成 X Server
    與 X Client 兩類程式,例如 XF86_Mach64、XF86_SVGA、XF86_FBDev,這些
    檔案都是 X Server 程式,例如 crxvt、netscape、x11amp 等,這些檔案
    都是 X Client 程式。

    有一個非常重要的觀念:X Protocol 的溝通內容,與一般常見的
    TELNET 或 HTTP 通訊協定,觀念上有部份不同,因此很容易造成初學者的
    混淆。

    舉例來說,當您在使用 TELNET 通訊協定時,連結溝通的兩端主機,
    大多時間都只是在互傳 ASCII 文字串,對使用者而言,應該可以
    想像並理解自己是連線至遠端的主機,存取遠端 Server 的資料。
    類似的情節,也能夠應用在 Netscape 瀏覽器 (Client) 的例子上,
    經由滑鼠點選各式的 URL 連結,我們可以想像這個「要求」,透過
    HTTP 通訊協定傳至遠端的網頁伺服器,由 Server 判讀出 Client
    的要求內容,再傳回所需的資料。

    就是說,一般的印象中,總認為 Server 與 Client 必定是分開的,
    而且 Server 通常代表一部位於網路遠端、功能強大、系統資源眾多
    的高檔主機,例如 File Server、FTP Server、WWW Server 等,反過
    來說,Client 則多半是自己電腦上的一個小程式,例如 telnet 程式
    或 netscape 程式等。但在 X Protocol 分工的情況下,X Server
    負責影像顯示的工作,它主要耗用的是「螢幕」「顯示卡」等系統資源
    ,而 X Client 負責程式執行的工作,它主要耗用的是「處理器」「記憶體」
    等系統資源。系統管理員可以依照系統資源及網路狀況,規畫出合適的
    系統架構。

    X Server 與 X Client 之間的位置關係,最單純的型式,便是兩者
    都位於您面前的同一台主機上,不過,請特別注意到,它們仍舊是
    維持著 Client/Server 關係。接著,若 X Server 於您面前的主機上執行,
    而接受網路上別台主機上的 X Client 程式執行的結果 (即所產生的
    視窗影像),您得為此配合一個不錯的網路環境,這類情況也蠻常見的。
    不論如何,X Server 沒有在您面前的主機螢幕上執行顯示,怎麼說都是
    相當特異的,通常也是沒有意義的事,而這類無意義的事何時會發生呢?
    當您嘗試 telnet 到另一台主機,然後執行 startx 時,這樣的事情便
    發生了。

  4. 什麼是 window manager ?

    在架構上,我們已經認識 X Protocol 規範了 X Server 與 X Client 之間
    的溝通方式,在實務上,當 X Server 為使用者準備好一個顯示環境時,
    您應該就能發現螢幕上會出現有底色 (僅是慘淡單調的顏色) 變化,
    而且滑鼠指標也啟動就緒,接下來,我們會看到一連串 X Client 的工作,
    而當中,最重要的 X Client 程式,就是 window manager 程式了。

    window manager 程式是其他 X Client 程式的「總管」,所有 X Client
    程式的視窗外觀與操作控制都會受到 window manager 的影響,我們稱之為
    「look and feel」,舉凡視窗的外框型式、桌面選單、圖示、虛擬桌面、
    按鈕樣式、工具列樣式等,都是由 window manager 所管理。而令人高興的是
    (或是讓某些人大感焦慮),X Window 的天地無比自由廣闊,透過 window
    manager 的設定,我們可以完成大部份的介面設計,打造一個符合個人風格
    的工作環境。

    當今 X Window 環境,已發展出許多豐富美麗的 window manager 程式,
    除了一般的功能外,也有加入讓人目炫神迷的多媒體效果。早期的 window
    manager 程式有:

    ●twm (Tab Window Manager)

    ●mwm (Motif Window Manager)

    ●fvwm, fvwm2, fvwm95 (F? Virtual Window Manager)

    ●olwm (OpenLook Window Manager)

    近期所發展的大多有其獨到之處,因此大量吸引人氣聚集:

    ●Afterstep

    ●Enlightenment

    ●WindowMaker

10.2 XLinux上如何設定 X 視窗

如果你習慣了工作站上的圖形環境,那你就會希望很快的設定好X,讓你在
XLinux上也有相同的環境。

如果你想發展XLinux的圖形化軟體,那你也會想設定好X,讓你的軟體有個發
展與測試的環境。

想設定X,先得要設定出一個檔,叫XF86Config,這個檔包含了相關硬體的
資訊,XFree86 3.3.5 隨附了一個工具程式xf86config,它可以幫你建立
XF86Config這個設定檔。但在XLinux中, 您只要利用Genie的設定精靈,
便可在短短的時間內設定好您的 X 視窗。 請參考本手冊第六章
Genie 的動態設定項目?/A>

接下來幾節會指引你設定 X 視窗的相關準備動作,讓你可以在XLinux上啟動X。

  1. 了解相關硬體的資料

    要設定 X 視窗,那你就得先了解 X 所會使用到的硬體的資料,從這章一開
    始的介紹,你可以知道 X 控制了那些硬體。

    顯示卡
    螢幕
    鍵盤
    滑鼠

    X server得有這些硬體的資料才能運作順利。

    顯示卡

    XFree86已經提供了各種特定晶片組(產生控制螢幕訊號的積體電路晶片)的X
    servers,想知道用那個server,那就得知道顯示卡是那一種晶片組。
    即使是同一系列晶片組的顯示卡,也可能會有不同的設定參數,因此也得知道
    哪一個廠商生產的,型號等等。
    至少,你得提供以下的資訊:

    顯示晶片組, 如 S3 或是 ATI Mach64。
    製造廠商和型號, 像是Diamond Stealth 64 VRAM,Number Nine GXE64,
    或是ATI Graphics Xpression。
    視訊記憶體的數目,是 1MB還是 2MB。

    螢幕

    X server經由顯示卡控制螢幕,它讓顯示卡送出各種訊號給螢幕(來控制畫
    raser線要多快,舉例來說,整個螢幕重畫的頻率),如果螢幕做了超過它能力
    所能做的事(譬如重畫raser線太快),那螢幕就可能會損壞,為了確保訊號是
    在螢幕可以接受的範圍,XFree86需要知道螢幕特性。
    至少,你得提供下列的資訊:

    水平同步頻率的範圍,傳統應該是 30-64 kHz。
    垂直同步頻率(也就是垂直更新頻率)的範圍.像是50-90Hz。
    如果查得到頻寬的話,那就更好,如 75 MHz。

    滑鼠

    滑鼠是圖形介面的一部份,因為使用者得用它來點選所要的項目,完成所要做
    的工作,當你移動滑鼠時,X server就會移動螢幕上的指標,X server會偵測
    滑鼠的按鍵,送出適當的控制事件(mouse-clickevents)給滑鼠指標所指向的應
    用程式。

    雖然在安裝XLinux時你已經設定過滑鼠了,不過你還是得提供滑鼠的資訊給X
    server,如果無法使用滑鼠,那麼XFree86就無法啟動。
    要設定滑鼠,得注意下面情況:

    滑鼠的種類,是Microsoft,Logitech,Busmouse還是PS/2-style。
    滑鼠連接的方式,經串列埠或是Bus連接。
    滑鼠的設備名稱(devicename),你可以直接設定為/dev/mouse,這是個link
    指到Linux中真正代表滑鼠的設備檔案,檔案的名稱隨滑鼠的種類與連接
    的,方式而不同。

    只要設備名稱和滑鼠的種類是正確的,那麼應該不會有任何問題。
    如果你的滑鼠是以bus方式來連接,那要注意不要跑gpm(這是個可以讓你在文字模
    式下剪貼文字的程式),因為它會影響X的運作,你可以用下列的指令去看看是不是有
    跑gpm:

    ps aux│grep gpm

    如果有的話,在你進 X 以前,用kill這個指令去結束這個程式。

10.3 啟動與結束 X 視窗

  1. 執行 X

    X Window 的開啟,至少有兩種主要的方式,一種是輸入 startx 指令,
    另一種是執行 xdm 程式。

    執行startx

    tartx 指令其實是系統裡的一個 shell script,
    我們可以透過文字編輯器直接觀看及修改其內容,而 startx 指令執行時,
    本身也可以指定選項,例如 startx -- -bpp 16 則是常見的選項方式,
    用於指定 X Server 以 16 bpp (bit per pixel),即每個 pixel 可表達 2^16
    相當於 16 百萬的色彩數。當您遇到 startx 的預設 bpp 為 8 時,表示
    每個 pixel 只能用以顯示 256 色,可能在使用上便顯捉襟見肘了。

    startx 這個 script,它是在/usr/X11R6/bin 這個目錄中,
    所以之前要看看PATH這個環境變數有沒有含括這個目錄。

    執行startx時,startx會去找另一個script叫.xinitrc,首先它會去home directory
    找,如果沒有,會以/usr/X11R6/lib/X11/xinit/xinitrc當做預設檔,注意喔,
    這個預設檔不像home directory裡的.xinitrc前面有個句號。

    如果你有修改home directory裡的.xinitrc,那改變後的 .xinitrc檔,
    最後結尾的幾行應該是像下面這樣的:


    # start some nice programs
    xsetroot-solid SteelBlue
    xterm -sb -name Linux &
    fvwm
    


    #開頭表示之後的文字是註解,xsetroot這個程式把桌面背景設成SteelBlue。
    xterm則是一個終端機模擬器,在xterm那一行最後那個 & 記號,則是讓
    xterm在背景執行,最後,fvwm則是啟動視窗管理員。

    現在,可以在xterm(在主題捲軸有Linux這個字那個)這個視窗中下命令,
    視窗管理員(像是fvwm)總是被放在.xinitrc的最後一行。這樣你可以藉由結束
    視窗管理員來結束X回到文字畫面。

    xdm

    xdm 是開啟 X Window 另一種常見的方式,您可以使用 root 帳號執行 xdm
    指令,隨後會出現一個「登錄系統」的提示畫面,您必須正確輸入帳號與密碼
    後才能開始使用各式應用程式,這點與上述 startx 的方式大有不同。
    使用者也可以修改 /etc/inittab 檔案內容,請先找到下列的一行資料:


     
    id:3:initdefault:
    


    然後把 3 改成 5,這樣一來,系統一開機後就入直接開啟 xdm 登錄畫面。

    有些人會直接使用 xinit 程式來啟動 X Window,這樣的「古典方式」
    並不建議新手使用,一般僅適用於特殊場合。

  2. 結束 X 視窗

    關閉 X Window 的方式,一般正常情況下,請依不同的 window manager
    來點選 logout 按鈕,或是直接使用 Ctrl + Alt + Backspace 三鍵,
    也可以離開整個 X Window 環境。如果是使用 xdm,則上述的方式僅會讓您
    回到登錄畫面,想回到文字命令列模式的話,請試著按下 Ctrl + R 鍵。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文