[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > 其它 > 正文
X Window 系統使用指南 -- 第16章 實際的使用Resource
本文出自: 作者:cuteyu 整理 (2001-10-09 10:00:00)
    前一章解釋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(轉
譯),來剪裁你的鍵盤以適於特別的應用程式。

=====
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
在Unix下用C編寫類Windows菜單 (2002-01-29 20:13:50)
Linux 和 Windows 共享交換區 (2002-01-18 08:10:00)
X Window 系統使用指南 -- 附錄G 需要從你的系統管理者得到的資訊 (2001-10-11 08:00:00)
X Window 系統使用指南 -- 附錄E 如何取得X (2001-10-11 07:00:01)
X Window 系統使用指南 -- 附錄D 本發行版的內容 -- 使用者貢獻的版本 (2001-10-10 15:00:00)
X Window 系統使用指南 -- 附錄C 本發行版的內容 -- MIT Core Distribution (2001-10-10 12:00:01)
X Window 系統使用指南 -- 附錄B 安裝X (2001-10-10 10:00:04)
X Window 系統使用指南 -- 附錄A 文件指引 (2001-10-10 09:00:01)
X Window 系統使用指南 -- 第20章 全部放在一起 -- xdm (2001-10-10 08:00:00)
X Window 系統使用指南 -- 第19章 進一步介紹 uwm 和如何定制它 (2001-10-10 07:00:00)

===更多相關===
 

★  樊強制作 歡迎分享  ★