X Window 系統使用指南--實際的使用Resource
第16章 實際的使用Resource 前一章解釋X resources的規則----為什麼需要它們,結構如何工作和 resource規格的格式。本章中繼續討論resources ,但較強調實用性:我們告 訴你如何及何處設定resources 預設值,來影響你的系統的一部份或全部。在 本章結束前,我們將完成一些□例,點出你可能常見的錯誤,并告訴你如何克 服它們。
在這些□例中,我們假設你自己的工作站叫做venus ,并且大部份時間你 是使用它。從venus 的顯示器,你可在遠方的機器saturn和mars上執行clIEnt 應用程式且和venus 共享檔案系統;neptune 則不可,我們曾在第4章描述過。
當你在本章中時,記得resource結構是:傳遞資訊給應用程式,通常這些 資訊是用來傳遞一些比較感興趣的預設值(例如色彩和字型),但只要應用程 式取得協調你就能使用這種設施傳遞任何資訊。所以我們一般狀況下傾向於把 ”resource規格””預設值”(defaults)”resource”這三個名詞視為同一含 意。
16.1 在何處儲存resource的預設值
在上一章我們只告訴你輸入resource規格到”一個資料庫”,但未告訴你 如何做。事實上有幾個不同的地方可以儲存預設值:這些”地方”通常是一個 你可以用任何編輯器修改的簡單的文字檔案,但有一個特殊的位置需要特殊的 工具來設定它,我們先很快的給你一個概念,再討論細節部份。
首先它的架構非常的復雜:包含命令列選項總共有八種設定resource方法, 但有兩個重點需要注意:
1 .你最好只使用其中的一或二種設置,只要你做完啟始設定,你將只 須改變預設的設定。
2 .系統是被設計來掌握許多不同模式的工作,和滿足那些在許多顯示器 上工作或在一臺顯示器上工作而存取遠方機器的使用者的。
總結來說,這些設置是提供來讓系統盡可能富於彈性,但任何時刻你將只 須存取其中的子集合而已。
16.1.1 設定Resource的八種方法
總共有八種方法設定resource,但它們可分為下面幾類:
.應用程式專屬的(Application-specific)resource:resource的表列, 限定檔案只能被特定的應用程式讀取。
.Server專屬的resource:應用設定,不管應用程式在那一種主機上執行。
.主機專屬的設定(Host-specific-setting) :對應用程式在主機上執行 有關的設定,和顯示器無關。
.命令列選項:在執行時期做一次關閉(one-off) 設定。
應用程式專屬的resource -- 方法1 和方法2
Toolkit 程式初始時在和應用程式直接相關的兩個檔案中尋找resource, 這些檔案只能被特定的應用程式讀取:
1 .應用程式--類別(Application-class) resource檔案:這個檔案包含 了機器一般性(site-wide) 對應用程式的類別之預設值,通常為系統 管理者所設定。它的名稱就是應用程式類別的名稱,在標準安裝的系 統中它是儲存在目錄/usr/lib/X11/app-defaults 中,例如xterm 的 相關檔案為:
/usr/lib/X11/app-defaults/XTerm
在core版中,有一個相關於Xmh 的此種檔案,觀察此檔案可以看所使 用之設定的型態。
2 .你自己擁有的應用程式專屬的resource檔案:這個檔案的名稱和上述 相同,但它存放在不同的地方----由shell 變數$XAPPLRESDIR所指定 的目錄,如果未定義,則放在home目錄。例如對Xmh 類別的程式,它 的檔案放在下列二者之一:
$XAPPLRESDIR/Xmh $HOME/Xmh
你可以使用此種檔案,處理方法1 中你不喜歡的 site-wide檔案使其無 效。
Server專屬的Resource -- 方法3 和方法4
這是對你目前工作的Server(顯示器)做有關的設定。鍵盤的設定通常是 server專屬的(因為不同的顯示器有不同的鍵盤)。另一個server專屬的特徵 為顯示器是彩色或單色。
Resource和這些有關的項目會被所有與這個終端機相關的應用程式應用到, 并且不論應用程式在何主機上執行。(例如,如果你使用的顯示器為單色,則 不管你的應用程式在何處執行,你還是不會要它使用彩色。)
儲存server專屬設定的方法是:
3 .server的RESOURCE_MANAGER性質(property):(你可在12章中xprop 的輸出看到),使用下述的xrdb程式,你可以在server的根視窗的 RESOURCE_MANAGER性質中儲存resource設定。它的優點如下:
(a) 你不需編輯任何檔案即可設定預設值。(當你為了了解系統而實 驗系統時特別有用)
(b) resource被server掌握,所以不論應用程式在那一部主機上執行, 均能被所有的應用程式應用。在我們的□例中,在neptune 的 情況下特別有用,甚至在不和我們的顯示機器venus 共享檔案系 統時,它仍然自動地選出為了使用此顯示器所必需的resource設定。
4 .你的$HOME/.Xdefaults檔案:(只有在根視窗沒有RESOURCE_MANAGER 性質定義的情況下使用)。如果你對xrdb尚不熟悉,你便可以此檔取 代,但你必須在每一部你執行client應用程式的機器上均設定一個。
主機專屬設定 -- 方法5 和方法6
主機專屬預設值和server專屬相反,不管應用程式所使用機器的終端機為 何,只要應用程式在此主機上執行,均使用主機專屬預設值,你可以用它們來:
.讓應用程式在不同的機器上對不同的檔案系統作計算,例如:被一個應 用程式讀取的資料檔案可能在不同的主機上保持不同的位置。
.區分顯示在同一個螢幕上不同的主機的視窗(這些視窗可能由同一個應 用程式執行),例如:你可以要所有在mars機器上執行的xterm 的視窗 為紅色的邊框,而在saturn上執行的視窗為黃邊。
.調高一個相同的應用程式在不同的client機器上版本的差異,例如: xterm 在venus 是標準的MIT 版,但在neptune 機器上是由第三集團修 改過以適應機器結構的產品,這兩版的xterm 可能并不完全相容。
主機專屬Resource儲存在:
5 .由$XENVIRONMENT 來的檔案名稱:如果shell 變數$ENVIRONMENT有被 定義,它會被解釋為一個含有resource設定的檔案之完整的路徑名稱。
6 .你的$HOME/.Xdefaults-thishost 檔案:(當$XENVIRONMENT 未被定 義時使用)。注意它和我們先前的檔案有所不同,它必須附加上主機 名稱,例如,如果你在neptune 執行應用程式而在venus 顯示(假設 RESOURCE MANAGER性質未定義),則server專屬 resource 讀取自:
.Xdefaults
而主機專屬resource則是:
.Xdefaults-neptune
兩者均在neptune 的家目錄(home Directory)中。
注意:在不同的小節中,我們曾說過類似”server專屬resource讀取自...” 這可能造成誤導:”如果你實際需要,你可以放置任何型態的resource設定到 任何的檔案或資料庫。”我們真正的意思是你應該放置機器特性或不論甚麼的 resource到任何地方,如果你這樣做,你將獲得你需要的動作。
命令列選項 -- 方法7 和方法8
最後,你可以藉著命令列選項設定應用程式的值。通常當你設定預設值時 ,為的是你不需要使用選項為你的程式作X相關的設定。但你實際上可以用它 們來:
.一次關閉(one-off) ,例如:你暫時性地在螢幕上需要一個極小的xedit。
.為了區別在相同應用程式中各自的成員,你已看過一個這樣的例子,當 我們使用命令
xterm -name demo
來設定應用程式的成員名稱給demo,將造成以應用程式名稱為demo的 resource取代xterm 的resource。
命令列選項分為下列兩種:
7 .應用程式專屬選項:例如xclock的-chime的xpr 或-scale。
8 .Toolkit 標準選項:所有用到Toolkit 的應用程式均接受一些標準的 命令列選項,我們看過其中的大部份,包括-fg, -bg, -display, -geometry 等等,標準選項的清單在”X Toolkit Intrinsics ”手 冊的2.3 節中。
在其中有一個選項-xrm,重要的足以用一個小節來描述。
Toolkit 標準選項-xrm
大多數一般的resource均能被命令列選項明確地設定,例如你可以用 -bg colour設定視窗背景顏色。但無論如何,有一些resource并沒有符合的選 項。為了克服這點,Toolkit 提供一個 '捕捉遺漏' (catch all) 的選項-xrm (X Resource Manager 縮寫)。
-xrm以一個引數當做resource規格,就如同你在預設值檔案中輸入的相同, 例如:你可以輸入:
xclock -xrm '*update:30'
和
xclock -update 30
是相等的。
在同一命令列你可以使用數次-xrm,但每一次只能包含一個resource規格, 例如:
xclock -xrm '*update:30' -xrm '*chime:on'
-xrm的好處在於你可以用它來設定任何resource供應用程式使用,尤其是 那些和命令列選項不符合的resource。其中一些非常有用的像:
iconX, iconY:視窗表徵圖左上角x,y 座標的位置。
iconPixmap:被用來當作視窗表徵圖的位元映像的名稱,你可以用它 來指定任何的位元映像當作應用程式表徵圖。(位元映像 為已有或利用bitmap程式建立。)例如:命令
xedit -iconic -xrm '*IconPixmap:cntr_ptr' -xrm '*iconX:500' -xrm '*iconY:400'
的意義為將xedit 設定以表徵圖開始啟始,表徵圖的左上角 座標為(500,400) (在大多數的顯示器會在螢幕中央),使 用名為cntr_ptr的位元映像來當作表徵圖。
backgroundPixmap:設定用一個位元映像當作背景。
borderPixmap:設定以一個位元映像當作視窗的邊,例如:
xclock -bw 20 -xrm '*backgroundPixmap: scales' -xrm '*borderPixmap: cntr_ptr'
執行xclock,用一個寬達20個像素的邊框,視窗的背景為魚鱗 (fish-scales) 圖案,邊框則用cntr_ptr的位元映像。
所有的這些resource當然也可用類別指定。(如IconX ,BorderPixmap等等。)
注意:請記住,-xrm只有在程式有用到Toolkit 才可應用。
16.1.2 設定Resource不同方法的摘要
現在我們將如何對一個指定應用程式resource設定的八種方法作一摘要:
應用程式專屬resource:它們被兩個檔案掌握,且僅能被Toolkit 使用, 其中一個檔案通常由系統管理者設定,另一個由你自己設定。
server專屬的resource:不是存在根視窗的RESOURCE_MANAGER性質中,便 是在你的$HOME/.Xdefaults檔案中。
主機專屬resource:如果shell 變數$XENVIRONMENT 有定義的話,存在其 所定義的檔案中,否則在你的$HOME/.Xdefaults-host 檔案。
一次關閉設定:用應用程式的本身命令列選項來設定,和用Toolkit 標準 命令列選項,包含”捕捉遺漏”-xrm.
它們以下列順序處理:
if (程式使用Toolkit ) 讀取 /usr/lib/X11/app-defaults/class檔案 (1) 讀取你的 $HOME/class檔案 (2) if (RESOURCE_MANAGER性質被定義) 處理內含的指定 (3) else 讀取你的$HOME/.Xdefaults檔案 (4) if (shell 變數XENVIRONMENT被定義) 讀取所定義名稱的檔案 (5) else 讀取你的$HOME/.Xdefaults-host 檔案 (6) if (程式使用Toolkit ) 處理標準的resource選項,包含-xrm (7) 處理應用程式本身的選項 (8)
現在我們將更詳細的看一個較不熟悉的方法 -- 用來儲存server本身 resource的方法。
16.2 在Server上儲存預設值 -- xrdb
大部份預設值的結構均和檔案有關,當應用程式啟始時,不同的檔案被讀 取且其內容被處理,這種方式的缺點為你希望所有的client在一個特定的 server上使用同一組的預設值,但client所執行的機器上如果沒有一個共同的 檔案系統,你該怎麼辦?
答案是在server本身儲存預設值。X的性質設施是一個具有一般性目的的 結構。(記住,一個”性質(property)”是一小段已知格式資料的名稱,被儲 存在server),指定由server根視窗的RESOURCE_MANAGER性質載入,且當應用 程式啟始時系統會注意此事。當視窗系統啟始時,RESOURCE_MANAGER性質未定 義:如果你要使用這個設施,你必須明確地設定它。
并沒有一個一般性的工具來操作一個性質,所以X提供了一個特殊的程式 來處理resource性質,它就是xrdb(the X Resource DataBase 公用程式)。
16.2.1 xrdb能為你做什麼
為了方便起見,本章剩馀的部份,我們只把RESOURCE_MANAGER性質和它的 內容當成”資料庫”。
xrdb的功能非常簡單,它讓你能:
.設定一個新的資料庫。
.看目前有那些resource在資料庫中。
.在現存的資料庫加入一個新的resource。
.完全去除資料庫。
這些是基本操作,且很容易完成。當然也有一些更進一步的功能可以很精 確地讓你控制resource,但我們先來討論基本操作。
16.2.2 使用xrdb的基本功能
xrdb的操作類似大多數Unix的程式:它從一個檔案或標準輸入讀取輸入資 料,并且你可以用命令列選項來控制它的操作模式,它所讀取的輸入是我們曾經看 過的一系列resource設定,不過比較特別的是它把這些設定載入資料庫,讓我們看 一看它主要的功能:
設定一個新的資料庫:輸入下面命令兩者之一:
xrdb filename xrdb < filename
用以將一個檔案中的設定載入到一個資料庫中,如果只鍵入xrdb,表示你將由 標準輸入(通常為鍵盤)直接輸入設定,稍後我們將說明xrdb所接受的檔案格 式,但現在先把輸入resource設定當作和.Xdefaults檔案或-xrm引數相同的方 法,例如,你可以用下列的方式定義xclock設定:
venus% xrdb xclocks*Background: pink xclock*update: 30 xclock*backgroundPixmap: cntr_ptr <end-of-file>
通常你用一個檔案當作xrdb的輸入,也就是說,xrdb從一個檔案載入預設 值作為你的視窗系統初始化的一部份。如果你很有經驗,直接輸入它的設定也 許容易些。
查看現存資料庫中的內容,輸入命令:
xrdb -query
則xrdb將以明白本文格式(plain text format) 印出資料庫的內容(-query可 以縮寫為 -q )。
(你可能記得也可以在根視窗用xprop 來看資料庫的內容,但xprop 的輸 出格式不太靈巧,它給你其它一大堆你不需要的資訊。)
如果需要,你可以抓取xrdb的輸出到一個檔案,編輯它,更改設定後可再 用它當作xrdb的輸入。(下一項功能告訴你一個更好的方法)
注意:查看資料庫,你必須使用選項-query。如果你忽略這個選項而只輸 入xrdb,將造成會清除資料庫,且xrdb在等待你自標準輸入鍵入你 新的設定。
在現存資料庫加入新的設定:加入新的設定到資料庫且不要破壞原有的設 定,使用命令:
xrdb -merge filename
(-merge可縮寫為-m,如果你省略檔案名稱,xrdb會自標準輸入讀取。) xrdb自指定的檔案中讀取resource設定,并加入現存的資料庫中;對於資料庫 中已存在的resource,如果有新的設定,舊值會為新值取代,否則則不會變動。
完全移去資料庫:如同先前所述,當系統結束時資料庫會自動消失,但如 果你在系統仍在執行時移去資料庫,使用命令:
xrdb -remove
本節介紹xrdb基本的功能,下一節我們介紹當你熟悉系統時,你可能需要 的更進一步的功能。
16.2.3 xrdb的檔案格式
你已知道大多數的格式細節 -- 你可以用標準的resource規格的形式
characteristic: value
上述的格式你已看過多次,但xrdb有兩個額外的規則:
1 .注解(comments):每一行的開頭如果是驚嘆號(!)會被忽略,所以 你可以此當作注解。
2 .xrdb預設將它的輸入列傳到C 前處理器。
讓我們進一步看一看前處理器的過程。
xrdb前處理它的輸入列
讓我們看一看一個你可能碰到的典型問題。假設在一般的場景,你使用下 列顯示器:
venus 彩色螢幕,正常解析度 saturn 單色螢幕,正常解析度 mars 彩色螢幕,高解析度
以上三者共享一個共同網路檔案系統,當你在一個顯示器上啟動X,你需 要定義預設值來反應顯示器的特徵。例如:在高解析度螢幕你可能需要較大的 預設字型,或是你不需要在單色系統上定義彩色預設值。
如何做呢?讓我們看一看,如果你能使用.Xdefaults-host 檔案:在 .Xdefaults-venus我們包含了彩色指定,而在.Xdefaults-saturn 我們只放入 單色型態的參數。行得通嗎?當然,但是是有限度的:它只能掌握應用程式在 和server相同的機器上執行,如果應用程式在其它的機器上執行會得到它們主 機上的預設檔案。所以如果你使用venus 且在saturn啟始遠方的client,將會 用到.Xdefault-saturn而錯失所有的彩色指定。
你能夠只使用.Xdefault 檔案來區分機器嗎?不能,因為三臺主機共享相 同的檔案系統,所以$HOME/.Xdefaults會被venus 獲得也會被其它的機器獲得。
答案是在resource處理程序的某些地方,有一個結構可以分辨出所使用 server的某些特徵。xrdb可以用相當簡單的辦法做到這點,它先定義一些說明 server特徵的C 前處理器符號,而後將它所有的輸入傳遞到前處理器,最後將 處理過的資料載入資料庫。指南頁列出所有的xrdb定義的前處理器的符號,但 在此處我們需要用到的是:
X_RESOLUTION=n:n是每公尺長螢幕有多少像素。(根據我們的server,我 們正常解析度的螢幕為每□90個像素,相當於每公尺3454個像素。)
COLOR :只有螢幕支援彩色才被定義。
WIDTH,HEIGHT:螢幕的寬度和高度,單位為像素。
圖16-1顯示我們如何在xrdb的輸入檔案使用這些。(我們命名為 $HOME/.Xresources ,稍後我們仍將再度用到。)它可以正確地做到我們所想 要的 -- 它正確掌握了所有我們的顯示器,不論是彩色或高解析度或兩者都有。
一些要點值得注意:
┌—————————————————————┐ │ P197 FIG 16.1 │ │ │ │ 圖16-1 利用前處理器命令的Resource檔案 │ └—————————————————————┘
.你可以使用所有前處理器的功能。例如,我們使用它的表示掌握 (expression-handling) 能力:
#if X_RESOLUTION > 3600
.你可以在檔案中任何地方使用前處理器符號,并不只是前面有# 號的列, 例如,當
xload*Width: WIDTH
在venus 上xrdb執行到時,它將會讀取成:
xload:Width: 1152
所以由預設值可知,xload 視窗寬度將和螢幕寬度相同,高為80個像素, 且在螢幕的正上方。
注意:大多數Unix前處理器定義了一些和它們機器結構與作業系統相關的 符號,這些可能會干擾到你,特別是Unix通常定義的符號,現在 xrdb定義HOST為顯示器名稱中主機名稱的部份,所以你可能認為你 可以像這樣使用一個resource規格:
demo*title: X demo using display HOST
比方在venus 上,預期它相當於:
demo*title: X demo using display venus
事實上,在我們的機器上會得到
demo*title: X demo using display 1
原因為顯示器名稱是unix:0.0,所以主機名稱部份為unix,但前處 理器已定義了unix,所以整個解釋的順序為:
HOST -> unix -> 1
你可以用xrdb的-u選項來解除符號的定義,用以克服這點,也就是
xrdb -Unix < filename
但即使如此,主機名稱仍為unix,除非你明確地指定顯示器:
xrdb -display venus:0 < filename
另一個會產生干擾的□例,如何你輸入規格
xedit*Font: *-sun-screen-*
使用xrdb,現在用一個xrdb -query ,你可以看到在資料庫中實際 地設定:
xedit*Font: *-1-screen-*
在我們sun 的機器上,前處理器定義成另一個符號。如果你使用和你的機 器相關的名稱,你可能也會得到相同的效應。(如果你決定不需要前處理器的 功能,你可以用xrdb的-nocpp選項停止它的功能。)
16.2.4 如何將資料庫設定和你的xrdb輸入檔連接在一起
藉著像前述在一個含有大量前處理器命令的檔案執行xrdb,你初始化了資 料庫,在稍後的期間,交談式的使用xrdb,你將對資料庫做大量的更動,現在 你需要記錄這些設定,且將之與原來的輸入檔連接,以備將來之用。
如果你只使用xrdb -query ,你只能獲得目前的設定:所有在輸入檔中的 條件指令列若和現在的server不符則不會被包含。例如在saturn上執行前述的 檔案,則所有色彩和高解析度的設定,均被忽略(當然以 #開頭的也不例外), 為了克服這點,xrdb提供-edit 選項,例如命令:
xrdb -edit myresf
連接目前在資料庫中的值到檔案myresf內存在的內容,它藉著比對resource指 定特徵值的部份做到這點:如果在檔案中某一行和資料庫中某一項特徵相同, 則檔案中值的部份會被在資料庫中的值取代,用此方法,所有的以 #開頭的列 和條件設定均會保留在檔案中。
注意:前處理器完全不可以使用-edit 選項,那會導致問題,我們看一 下當我們使用venus ,且以前述檔案初始化資料庫時,會發生什麼 情況,假設我們做了更動:
venus% xrdb -merge XTerm*font: *-courier-medium-r-*-140-* <end-of-file>
然後用命令:
xrdb -edit myresf
將設定更改的部份放回檔案,我們看到兩件事:
1 .前處理器符號在規格中值的部份會被字面(literal)值取代, 例如:
xload*Width: 1152 會被
xload*Width: WIDTH 取代
2 .在規格中只要特性符合,值均會被取代,甚至那些在條件段中 目前尚未應用到的也不例外。例如,在前述檔案,設定 XTerm*font的那兩行(一行在高解析度那段,一行在正常顯示 器那段)都會被更改,即使我們只需要改變正常顯示器也不例 外。
16.3 一些常見的錯誤和如何修正它們
特別是當你對系統是新手的時候,resource看起來相當的復雜。當有些狀 況不能正常執行,而系統無法幫助你查覺是什麼錯誤,或你在何處犯了錯誤, 這里列出一些常見錯誤的明細,并提出如何修正它們。
.如果你未設定一個應用程式的名稱和類別,確定在你的resource規格之 前加一個星號,(如果你省略這個星號,將沒有任何東西會對應這個規 格)這個錯誤在你使用-xrm時特別常見,例如:
xclock -xrm 'update:3' (錯誤) xclock -xrm '*update:3' (正確)
.并非所有的應用程式均使用Toolkit ,非Toolkit 的程式不使用類別, 且它們的屬性名稱也可能不同。例如,規格
*geometry: 300*400+500+600
對xclock,xlogo 有效,但對xcalc 無效,因它不使用Toolkit ,xcalc 使用屬性名稱Geometry(開頭為大寫的G ),因為在這種情況,Toolkit 類別名稱和xcalc 的屬性名稱相同,所以單獨一個規格
*Geometry: 300*400+500+600
可以對所有這類的應用程式有效。
.你可能在規格中用了錯誤的屬性或Widget的名稱,特別是容易把類別名 稱和成員名稱搞混,例如:以下兩者均錯:
xclock*Update: 10 xclock*interval: 10
其它常見的錯誤如:
xterm*Text*background:blue
它不能執行的原因為xterm 并未使用Text widget ,xterm 正常的視窗 和Tektronix 的視窗分別使用widget類別 VT100和Tek 。最後,當你 知道一個widget是什麼類別,你可能對成員名稱假設錯誤,不是widget 本身便是其中之一的屬性。試著更換類別名稱來修正這個問題。
.即使你已設定實際的widget和屬性名稱或類別,應用程式可能以不是你 預期的方式使用它們。例如:你可能設定如下:
xterm*Width: 40 xterm*Height: 10
意圖用比平常較小的視窗啟動xterm ,但它不能執行,xterm 只能在 Tektronix window應用這些值,無法在正常的視窗。
.你可能所有的設定完全正確,但仍然什麼也沒發生,例如:
xmh -xrm '*inc.Label: Include'
是一個正確的方式,執行xmh 并指定label 為inc 盒的必須被'Include'。 但在標準系統的發行版,是沒有任何動作發生的,原因是xmh 有一個應 用程式設定預設值檔案/usr/lib/X11/app-defaults/Xmh ,其中有一行:
xmh*inc.label:Incorporate New Mail
這個規格較我們的設定有較高優先。
.將規格
*Width: 200
單獨包含在資料庫將導致大多數的Toolkit 程式啟始失敗,且有一個 訊息說它的'shell widget has zero height or width' 。如果你設定 height和width 二者之一,你必須也設定另外一個。
.如果你用編輯器建立一個resource檔案,你可能省略了最後一個new line 這將導致當你試圖用xrdb載入它時整個檔案均被忽略。為了避免如此, 當載入resource時,用一個命令列像:
xrdb resfile; xrdb -query
如果xrdb無法列印出resfile 中的內容,就是有問題了。
.你可能忘了用-xrm選項的引數來獲得resource規格,有時有人會把 resource規格放入一個檔案,而以檔案名稱為-xrm的引數,預期它自此 檔案中讀取resources。
.最後,一個非常人性的錯誤,當你發生問題,你通常會循環動作:編輯 resource檔案... 儲存它... 載入resource到資料庫... 執行應用程式 和看一看發生什麼狀況。”其中載入resource到資料庫”常常會被忽略 以致你更為困惑。
16.4 結論
本章中,你已看過了所有你能設定resource的地方,為何有這麼多種的方 法,如何決定設定放置在何處。你看到如何使用xrdb程式在server實際地儲存 預設值,它們在何處被server所有的client存取,甚至它們可以在遠方的機器 上執行。最後,有一些關於常見錯誤的實際提示,告訴你什麼需要注意。
你現在處於實際使用resources ,和剪裁你的系統適合你的口味,resource 結構功能非常強大且有無限的彈性,所以它可讓你定制任何你需要的事。剛開 始不妨試一些像字型或色彩之類簡單的設定,當你熟於基本的結構時,再轉到 更高水準的例子。
下一章將告訴你如何使用特別形式的resource規格 -- Translations(轉 譯),來剪裁你的鍵盤以適於特別的應用程式。