第20章 全部放在一起 -- xdm
現在我們已涵蓋了你需要用到X的所有個別的項目,你知道如何啟動系統,
如何設定一個視窗管理器的執行,如何執行應用程式,如何從不同的角度定制
系統,最後,如何退出系統。
本章中,我們把這些分開的部份放在一起,且描述一個完整的檔案設定,
用來定制涵蓋所有的范例功能系統機器環境。在本章我們將看到我們所要介紹
給你的最後一個X的工具:顯示管理器(display manager) -- xdm,它提供一
個精巧和清楚的方法在你的機器上啟動X。
20.1 我們需要做些什麽
當我們啟動之後,我們需要安排螢幕,讓一些我們在整個執行期間中都會
使用的應用程式適得其所,讓一些偶然用到的則以表徵圖為開始時的表示方式。
我們需要執行視窗管理器,對某些種類的功能做一些設定。詳細來說,我們需
要下列的程式:
.一個xterm 的主控台,在螢幕左上角。
.uwm 在背景下執行。
.一個我們的(正常)編輯器的全螢幕xterm 視窗,以表徵圖啟始。
.在右上角一個(較一般為小)的時鐘。
.xbiff 在時鐘之下。
.一個計算器在右下角。
.一個用到我們所有最小的字型的表徵圖化的xterm ,它的高度為screen高。
.在xbiff 之下,排列我們使用遠方機器的頻率圖。
除了程式之外的項目:
.設定背景視窗為亮灰色。
.啟動鍵盤滴答(key-click) 的功能。
.從我們常用的網路主機存取到我們的server。
.載入我們對所有client用到的server設定的resource,在16章我們定義
的$HOME/.Xresources 檔案中,根視窗RESOURCE_MANAGER性質之上。
.啟動一個screen saver。
並且我們需要uwm 有選單讓我們能夠:
.容易地存取在網路上其它的主機。
.變更一些鍵盤和滑鼠的設定,且設定背景視窗的顏色。
.啟動那些我們偶而會用到的應用程式。
.啟動一些被選定的示范程式。
對這些我們自己的設定,在我們網路上其它的使用者需要不同的初始設定,
所以我們需要安排每一個使用者依他們自己的喜好設定,理想上,使用者應能
自行設定而毋需藉系統管理者的幫助,下一節我們來看程式xdm 如何能幫助我
們達成這些目的。
20.2 xdm -- X顯示管理器(X Display Manager)的概觀
xdm 管理一或多個顯示器,xdm 可在同一機器或遠方的機器上執行。它可
以做到所有xinit 能做到的,而且更多。它所隱含的概念為它應控制當你在X
工作時的完整周期 (session),意即從你進入直到結束視窗系統的周期。(用
xinit ,有效周期為當你執行xinit 開始,到你結束(logout)最初的xterm
視窗和關閉server。)
xdm 較這更進一步:你可以用它執行一個不確定的周期。當一個結束,下
一個便准備開始。實際上,如果你有需要,它讓你不變地指定一個顯示器。
xdm 完全取代xinit 。從現在起你可忘掉xinit ,而且不再需要使用它,
我們在最初使用xinit 的原因為它較易觀察和了解系統的運作。
xdm 是一個非常靈活的程式,你幾 可用它建構任何你所需要的,在進一
步深入之前,讓我們觀察一個范例周期的預設行為,然後我們來看一看你如
何改進當一個使用者進入X系統所看到的初始介面。
20.2.1 一個用xdm 的范例周期
我們將使用xdm 來設定在我們機器上執行的X。你的機器已經啟動,但尚
未有視窗系統在其上執行。用下列的命令啟始xdm
xdm
xdm 開始執行,你幾 立刻又看到你的shell 提示。然後螢幕背景變更為
通常灰色形式,且你看到一個大的X游標,所以你知道server已經啟始。
接下來是一長段修止狀態 -- 大約接續15秒或更久 -- 而後突然間一個帶
著歡迎標題的視窗出現了,要求你的登錄名稱(login name)和密碼(passWord),
如圖20-1(這是xdm 的authentication widget )。輸入你的使用者名稱和密
碼,又過了一會兒,你可以看到一個xterm 視窗在左上角出現,就如同圖5-3
一般,從現在起,你工作的方式和以前相同 -- 啟動你的視窗管理器,執行應
用程式等等。
┏----------------------┓
│ FIG 20.1 P.251 │
│ │
│ 圖20-1 xdm 的 authentication widget │
┗----------------------┛
當你需要結束時,你也可用像以前相同的方式結束:logout最初始的xterm
視窗。但這裡xdm 和xinit 有不相同的地方,代之關掉server的是,回到非X
的環境,螢幕回到最初始灰色的背景,過一下子之後,你又再度看到X的登錄
視窗。事實上,xdm 是執行一個循環的周期。
注意:就像許多的Unix程式,最大的登錄名稱長度為8 個字元 -- 如果超
過這個長度,login 將會失敗。(如果你的實際login 程式允許你使用較長的
名稱,這種限制也許讓你感到奇怪。)
關閉xdm
有時你可能需要完全地關閉X。為了做到這點,你需要關閉xdm 。
在M99v 版中的server,會依循如果收到Unix訊號SIGTERM ,便會執行中止
程序。xdm 利用到這點:如果你送給它一個SIGTERM ,它將中止所有它所控制
的server後離開。這就是你中止系統的方法。
欲實際地中止xdm ,可以在一個xterm 視窗(在你的機器上)用ps來找出
xdm 的process-id,而後用kill送給它SIGTERM (你將看到數個xdm 處理的執
行:那個最年輕的便是你要的,也就是說,最低的process-id)。例如,在我
們的機器上執行中止的動作:
venus% ps ax 1 grep xdm
1997 ? IW 0:00 xdm
1998 ? IW 0:00 xdm
2000 ? IW 0:00 xdm
2078 p0 S 0:00 grep xdm
venus% kill -TERM 1997
你所有的應用程式將被強迫中止,server也隨之關閉。
注意:當相關於X的每一件事都結束後,你的螢幕可能只顯示通常X背景
的灰色形式,沒有任何的shell 提示或任何事。不要被愚弄了:你的shell 已
准備好接受你的命令 -- 按下RETURN鍵你將會看到。(因為在你以交談式下
xdm 命令之後,shell 已將提示號送出,所以不再重覆 -- 除非你按下RETURN)。
20.3 有關xdm 的更多
我們在前所述為xdm 的預設模式的操作,所以看起來並沒有比xinit 提供
得更多,如果你使用一個正常的工作站或顯示器,一些外貌將不是很有趣。無
論如何,X終端機(x-terminal)是一個日漸增加的大眾化設備,而xdm 可大量
地簡化管理類似的系統。X終端機通常沒有它自己的檔案系統,且不能支援一
般目的的程式,必需在網路的某處執行包含視窗管理器和顯示管理器的控制終
端機軟體,xdm 正是符合此需要的軟體。
xdm 在下列這些場合較xinit 為優:
.它可控制數個server,也暗示說,其中有一些為遠方的server,也許是
在X終端機或相當小的工作站上。
.它提供密碼來存取系統,同樣地,在X終端機上非常有用(但在一個你
已經login 的工作站會有一點困擾。)
.它提供無限期的X的周期。你可以建構顯示器經常性地以X操作,所以
使用者毋需擔心如何啟始系統。
.它具有高度的建構性,系統管理者可以設定依機器特性的啟始和結束程
序,掌握這些項目以供記帳(accounting),授權(authorization) ,檔
案系統等之用,且能讓每一個個別的使用者全范圍性地修定他們所需的
自己的環境。
.從使用者的觀點,它提供一個乾淨而簡單的方法來啟動系統。
所以大體上,xdm 主要是一個系統管理工具,但它也提供讓一個普通使用
者定制他所希 的一致和一貫地系統架構。
xdm 的指南頁包含了大量的有關如何使用系統的教學資訊和指引,在此我
們不再重覆,我們將在以下的章節說明如何正確地建構xdm 以提供在本章一開
頭所描述的環境。
xdm 真的非常有彈性,且你可以用許多不同的方式選擇設定,我們將使用
最簡單的處理,並試著大致和指南頁的描述保持一致,偶而我們在一些檔
案中使用不同的名稱,用以強調此名稱並非硬性的規定。
在我們工作的周期中,請對我們事實上在扮演兩個不同的角色保持概念:
第一是系統管理者,對於使用系統的任何人來設定xdm ,第二是一般的使用者
,為我們自己的需求設定xdm 。
20.3.1 系統管理者對xdm 的建構
預設xdm 先查看檔案
/usr/lib/X11/xdm/xdm-config
如果它存在,會把它當成多設定幾個其它三數的resource檔案。我們將使用它,
因為它可簡化我們的工作。
指南頁會列出所有你能藉xdm-config檔案設定的三數,