歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

X Window 系統使用指南--20


第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 。
在MIT 版中的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檔案設定的參數,但我們較有興趣的有:
.包含一個server的目錄的檔案名稱。
.當任何錯誤發生時,xdm 用來記錄的檔案名稱。
.包含和啟始系統有關的檔案系統名稱。
.當server啟動後執行程式的名稱,這個程式定義了你的”周期” -- 當
這個程式中止時,xdm 視其意義為你的周期已結束,且回到它login 時
的順序,預設這個程式為xterm ,就和使用xinit 一樣,你的周期持續
直到你logout你初始的xterm 。
這是我們已在系統上定義的設定:
DisplayManager.errorLogfile: /usr/lib/X11/xdm/errors
DisplayManager*resources: /usr/lib/X11/xdm/our-resources
DisplayManager*session: /usr/lib/X11/xdm/our-session
(我們已選擇保持所有xdm 相關的檔案在目錄/usr/lib/X11/xdm,這只是代表
名稱,你可以用任何你喜歡的目錄。)
所以你可以看到我們使用xdm-config,實際上是一個兩步驟的處理方法,
首先我們定義在xdm-config中的一些檔案名稱,接著我們來設定方才命名的檔
案。現在我們來看一下我們在xdm-config中定義的每一個resource。
xdm 的server的名單
能管理的server的名單。每一列中包含了server的名稱(也就是顯示器),
server的型態(type),和型態有關的項目。
型態指出了顯示器是本地的或遠方的。和是否為無限或單一的周期(詳見
xdm 指南頁)。我們將使用型態localTransient -- 單一周期在本地顯示器上
-- 因為以此方式,如果發生任何錯誤,我們不致於陷入無窮回圈中。稍後,
當我們每件事都設定好且執行無誤的話,我們會將型態改為本地而循環的周期。
對本地的顯示器而言,和型態相關的訊息是在此顯示器上執行的server程
式的名稱及其任何所需的引數。對遠方的顯示器,此訊息可被忽略,但你仍需
輸入一個假的(dummy) 程式名稱。
所以,在我們所建立的檔案/usr/lib/xdm/our-servers包含這一行:
:0 localTransient /usr/bin/X11/X :0
(如果我們喜歡執行循環周期,此檔案便不再需要 -- 預設設定會做到我們所
xdm 的錯誤登錄檔案
此檔案從xdm 和xdm 的周期程式接收所有錯誤的訊息,且如果你的xdm 設
定工作發生問題的話,這是第一個需要查看的地方。
當你開始設定你的系統,對此檔案設定任何人均可寫入,否則,有問題的
程式可能因沒有寫入許可而無法在檔案中記錄。
啟始時的resource檔案
此檔案包含一個resource的名單,在Authentication Widget 啟始之前被
xrdb載入。因此,你能用它來為那些widget設定resource。(你當然也能放置
任何其它的resource規格,但通常周期程式的使用者設定載入時會凌駕其上,
所以通常不把其它的規格放在這裡。)
authentication widget resource的預設設定在某些情況是很細的,但為
了舉例,我們只設定和bunner不同的標題,我們建立我們的檔案
/usr/bin/X11/xdm/our-resources 包含一行:
xlogin.Login.greeting:X-Window on the Plants network
xdm 的"Session(周期)"程式
你可以指定任何程式為你周期中所需的程式,可是當周期結束,你通常選
擇一個程式讓你能啟始其它的程式,你能依賴xdm 的預設設定執行xterm ,但
這種方式每當xterm 執行時你仍必需手動所有你的設定。我們需要定義我們的
周期程式來做所有我們的設定,且保持活動(active)的狀態直到我們結束它為
止,但記住,我們希望使用者如果需要能定義他們自己的周期程式,所以我們
將使用兩階段的處理,如果是系統管理者,我們將設定一個一般性目的,基礎
的,周期程式來召換一個使用者自己的程式(如果它存在),但其它方面將執
行一個合理預設。當個別的使用者,我們將定義我們自己的設定周期,它將被
xdm 的一般目的程式執行(我們在另外一節討論它)。
我們的基本的site-wide 周期程式非常簡單,如果使用者有設定檔案
$HOME/.Xsession 的常規我們便使用之,否則,我們將執行合理的預設 -- 啟
動uwm 而後傳遞控制到一個xterm(xterm為我們指定在螢幕左上方的那一個)
。但在做之前,我們先檢查是否使用者設定了檔案$HOME/.Xresources(其它的
常規),如果有的話,我們用xrdb載入它。一個完整的程式名單如圖20-2。
┌——————————————————————┐
│ FIG 20.2 P.257 │
│ │
│ 圖20-2 程式/usr/lib/X11/xdm/our-session │
└——————————————————————┘
20.3.2 我們自己對於xdm 的建構
現在我們改變角色:我們不再是系統管理者,而是一個使用者。我們可以
依賴系統管理者已定義之預設周期,但我們比較喜歡定義自己的周期,所以我
們要獲取那些說明我們所需的起始設定。
我們的實例.Xsession
我們已建立我們自己的$HOME/.Xsession,如圖20-3,且此螢幕初始的建構
在它執行之後會如圖20-4。此程式的操作十分直接,但當你自行設定時有一些
要點需要注意,且當你建立site-wide 周期程式也是一樣。我們假設你的周期
程式是一個shell :雖非必定,但通常都是(除非你要寫一個xetrm 的復雜的
代替品)。
┌——————————————————————┐
│ FIG 20.3 P.258 │
│ │
│ 圖20-3 $HOME/.Xsession 程式 │
└——————————————————————┘
┌——————————————————————┐
│ FIG 20.4 P.259 │
│ │
│ 圖20-4 我們初始化後的螢幕 │
└——————————————————————┘
.檔案中的命令依序排列,所以最後一行所執行的是一個程式,它可以持
續整個你的周期。(因為,當此程式結束,則周期程式結束,且每一件
事也均將結束)。
.除了在背景中最後的命令所有的命令均被執行,也就是說,在命令列最
後加一個ampersand(&) 號。如果你不這樣做,此周期將從不獲取過去
的任何不確定地執行的程式。例如:在我們的實例程式,如果我們在uwm
那一行省略"&" 號,uwm 會啟動,但在uwm 結束時,它的下一行將不會
繼續執行,絕不!
.最後的命令必為exec的命令,所以它繼續執行且保持你的周期繼續活動。
(如果你像其它命令一樣在背景中執行它,它會好好的執行,但此周期
程式執行至檔案結束將會中斷,而結束周期。如果你不用exec,且省略
"&" 號,則它會執行且此周期將完美地持續工作,你只是較你所需的多
執行了一個處理,就如同你仍有最後的程式(last program)和周期程式
本身。)
.對所有的程式建立視窗時設定geometry規格 -- 否則當它們啟動時你將
以”手動”方式指定它們的位置。
.在檔案中最後一行的程式通常用來啟動xterm ,因為它定義了你周期的
生命期,在你執行X時此視窗總是存在,所以你通常設定兩個特別的選
項:
1 .使用-C選項使得xterm 為一個”主控台”,所以系統訊息會在它的
視窗顯示。
2 .設定-ls 選項使它的shell 為login shell 。如此使得shell 讀入
你的.login或.profile,所以你的環境變數會適當地設定。(如果
你不這樣做,你只有一點兒定義:DISPLAY,HOME,USER,PATH和SHELL.)
3 .此周期程式檔案必需有執行許可。使用上述site-wide 周期程式,
這對使用者周期script不是絕對需要,它實際是對site-wide 程式
本身。(如果那不能執行,你只能獲得xdm 的預設設定。)
在裝設你的.Xsession 和依賴它啟始你的視窗周期之前,最好能夠從一個
xterm 視窗啟動你的.Xsession 以嚴格測試它。
20.4 我們自己的uwm 建構
我們需要設定四個uwm 選單:一是連接到其它的主機,二是執行一些X的
應用程式,三是設定一些鍵盤和滑鼠參數(有點兒像預設的Preference選單),
四是執行展示程式。
對我們的”主機”選單,我們現在希望只要藉著從選單中選取主機名稱便
可在任何主機上啟動xterm 。我們常常需在mars上做一些系統管理,所以我們
將設定選擇在其上為超級使用者(super user),我們將在左下角建立一個超級
使用者視窗,但對一般的xterm ,我們省略geometry規格,所以當它建立時,
我們可以明確地定位它。我們將以META-SHIFT-LEFT 系結 (bind) 此選單。所
以在我們的$HOME/.uwmrc中我們包含了此列。如圖20 - 5.
┌——————————————————————┐
│ FIG 20.5 P.260 │
│ │
│ 圖20-5 在$HOME/.uwmrc的主機選單 │
└——————————————————————┘
其它三個選單我們不常用,所以我們均以META-SHIFT-MIDDLE 系結它們,
這沒什麽特別,但注意Misc. 不包含一個內建的混雜的uwm 和shell 命令。這
些對應到.uwmrc的項目如圖20 - 6。
┌——————————————————————┐
│ FIG 20.6 P.261 │
│ │
│ 圖20-6 在$HOME/.uwmrc中其它的選單 │
└——————————————————————┘
uwmrc 剩馀的部份 (見圖20 - 7),我們用以設定定制系結和一般視窗建構
操作的參數。注意下列幾點:
.我們選擇一個較預設稍大的字型 (用"menufont=fixed"),降低選單選項
中的空白空間 (用"vmenupad=1"),所以選單不會很大。(menufont 可能
未在指南頁中描述)
.我們設定所有的選單,系結和變數可被重設(用resetmenus等等),這
清除了uwm 的建構,所以我們不用混雜的預設建構和我們自己的建構做
結束。
.如果可能,我們較願意使用滑鼠的UP事件函數而非DOWN:這種方式你能
藉著在松開按鈕之前按下其它的按鈕,來改變你的主意或中止操作。
(但你不能將move操作系結到一個UP事件。)
.我們已包含一些定義uwm 選單的功能 -- 一個是殺掉應用程式視窗,另
一個是重新啟始uwm 。它們不是必要的,但當你對系統很有經驗時會很
有用。
┌——————————————————————┐
│ FIG 20.7 P.262 │
│ │
│ 圖20-7 在$HOME/.uwmrc中系結和參數的設定 │
└——————————————————————┘
20.5 結論
你已涵蓋了core版中所有使用者層次的程式和如何使用它們。
你現在能夠自行設定和修訂成你所需的系統。大部份的修訂局限於你的家
目錄(home directory)中的三個檔案 -- .Xsession, .Xresources和.Uwmrc
-- 所以它很容易控制你的環境,且可在你的系統管理者所設定的任何設計下
執行。
我們涵蓋了一大堆的材料,且有許多的新觀念包含進來,所以你尚未能完
全吸收它,這不是我們所預期的,現在因為你已用過系統一段期間,所以回頭
重讀系統的觀念概觀,你將發現你了解更多,且你可看到在系統表面之後的動
機。
當你使用系統越多次,你將發現有一些面貌是你不喜歡的,但這些系統並
沒有。有一些工具和視窗相關程式可簡化你的工作,且有一些應用程式對X提
供介面有大利益,但不包含在此版本中,別失望! -- 看contrib 版軟體來取
代它。現在你知道基本系統的限制和能力,看一看其他的人利用它們做了什麽
,這也是你可能需要系統做的。
本書的目的是讓你有一個開始 -- 它並無意當一本完整的參考手冊。在某
些地方我們忽略了一些程式不常用的細節和那些對初學者易產生混淆和較復雜
的部份。但現在你能回頭重讀系統提供的文件,指南頁和其它的資料是非常龐
大的,如果你知道你要做什麽和只是要某一點復習一下你的記憶,或找出某些
事如何正確的執行,你將在其中的某處找到它們。現在你已會使用系統和中止
系統,你能明白參考手冊的意義,為了幫助你找出你自己貫通文件的方法,我
們有一個附錄包含了在這個版本中的資料名單,告訴你在何處找到它們,和如
何更進一步的去探討系統。
所以,現在我們只剩下一句話給您:祝一切順利!
Copyright © Linux教程網 All Rights Reserved