Solaris 一般桌上管理系統環境:進階使用者和系統管理員指南

第 2章 配置階段作業管理者

階段作業管理者負責啟動桌上管理系統並自動儲存與回復執行應用程式、色彩、字型、滑鼠行為、音量與鍵盤按鍵。

使用階段作業管理者,您可以:

什麼是階段作業?

階段作業是呈現在使用者的桌上管理系統上的應用程式、設定值與資源的集合。階段作業管理是使階段作業管理者能夠儲存與回復使用者的階段作業的一組慣例與協定。使用者能夠登入系統,並於使用者登出時以執行應用程式、設定值與資源的相同組別來呈現。 當使用者第一次登入桌上管理系統時,會載入預設起始階段作業。 之後,階段作業管理者會支援目前與主要階段作業的觀念。

初始階段作業

當使用者第一次登入桌上管理系統時,階段作業管理者將會使用系統預設值來產生使用者的初始階段作業。按預設,將會啟動檔案管理者與桌上管理系統簡介、輔助說明內容。

目前階段作業

使用者正在執行的階段作業永遠都會被視為目前階段作業,不論是登入時從儲存的主階段作業回復、儲存的目前階段作業或是系統預設初始階段作業。根據使用者的樣式管理者啟動設定值,當使用者結束階段作業時,階段作業管理者會自動儲存目前階段作業。 當使用者下次登入桌上管理系統時,階段作業管理者會重新啟動之前儲存的目前階段作業,表示桌上管理系統將會回復到與使用者上次登出時相同的狀態。

主要階段作業

您也可以讓桌上管理系統每次在使用者登入時就回復到相同的狀態,不論使用者登出時的狀態如何。使用者可以儲存目前階段作業的狀態,然後使用樣式管理者啟動設定值,讓階段作業管理者每次在使用者登入時就啟動該階段作業。

顯示器的特定階段作業

如果要執行特定顯示器的特定階段作業,使用者可以建立顯示特定的階段作業。如果要如此作,使用者可以將 HomeDirectory/.dt/sessions 目錄複製到 HomeDirectory/.dt/ 顯示器,其中顯示器 是實際不限定的主機名稱 (例如,pablo:0 是有效的,pablo.gato.com:0 unix:0 則是無效的)。當使用者登入顯示器 pablo:0 時,階段作業管理者將會啟動該顯示器特定的階段作業。

啟動階段作業

階段作業管理者是經由 /usr/dt/bin/Xsession 啟動的。 當使用者使用登入管理者登入時,Xsession 會因預設而啟動。

使用者可以選擇性地使用傳統的字元模式(getty)登入來登入,並且使用啟動 X 伺服器的工具人工啟動階段作業管理者,例如 xinit。例如: xinit /usr/dt/bin/Xsession.

當階段作業啟動時

當階段作業管理者啟動時,要經過下列步驟以啟動使用者的階段作業:

  1. 搜尋 HomeDirectory/.dtprofile 程序檔

  2. 找出 Xsession.d 程序檔的來源

  3. 顯示歡迎訊息

  4. 設定桌上管理系統搜尋路徑

  5. 收集可供使用的應用程式

  6. 選擇性地尋源 HomeDirectory /.profileHomeDirectory/.login

  7. 啟動 ToolTalk® 傳訊常駐程式

  8. 載入階段作業資源

  9. 啟動色彩伺服器

  10. 啟動工作區管理者

  11. 啟動階段作業應用程式

    下列各段描述以上所列出的步驟。

找出 .dtprofile 程序檔的來源

在階段作業啟動時,Xsession 程序檔會搜尋使用者的 HomeDirectory /.dtprofile 程序檔。 此 HomeDirectory /.dtprofile 程序檔是讓使用者能夠設定其階段作業環境變數的 /bin/sh/bin/ksh 程序檔。 有關設定環境變數更多的資訊,請參閱 其它的階段作業啟動自訂

如果 HomeDirectory/.dtprofile 程序檔不存在,例如當使用者正第一次登入桌上管理系統時,Xsession 將會複製桌上管理系統預設 sys.dtprofile HomeDirectory/.dtprofile

桌上管理系統預設為 /usr/dt/config/sys.dtprofile。 如果要自訂 sys.dtprofile 程序檔,請從 /usr/dt/configsys.dtprofile 複製到 /etc/dt/config 並編輯新檔案。

找出 Xsession.d 程序檔的來源

在搜尋 HomeDirectory/.dtprofile 程序檔之後,Xsession 程序檔會搜尋 Xsession.d 程序檔。 這些程序檔是用於設定其它的環境變數並啟動使用者的階段作業選擇性常駐程式。 預設的 Xsession.d 程序檔為:

0010.dtpaths—文件可自訂的桌上管理系統搜尋路徑

0020.dtims—啟動選擇性的輸入方法伺服器

0030.dttmpdir—建立每個使用者、每個階段作業的暫存目錄

0040.xmbind—設定 $XMBINDDIR 為桌上管理系統預設

Xsession.d 中可能有其它廠商特定的程序檔。

Xsession 會先搜尋 /etc/dt/config/Xsession.d目錄中的所有檔案,接著才搜尋 /usr/dt/config/Xsession.d 目錄中的檔案。

桌上管理系統預設 Xsession.d 程序檔是位於 /usr/dt/config/Xsession.d 目錄中。如果要自訂 Xsession.d 程序檔,請從 /usr/dt/config/Xsession.d 將程序檔複製到 /etc/dt/config/Xsession.d 並編輯新檔案。 您必須有執行許可權才能執行此工作。

同時,如果要使 Xsession 自動搜尋您自己的程序檔,請將其複製到 /etc/dt/config/Xsession.d


註解 –

當您修改或建立 Xsession.d 程序檔時,請確定您發出的任何前景指令持續時間是短期的,因為指令所花費的時間將會直接影響階段作業啟動時間。如果前景指令未結束,階段作業啟動將會停頓。您想要繼續執行階段作業持續時間的 Xsession.d 程序檔中執行的指令應在背景中執行。


顯示歡迎訊息

在搜尋 HomeDirectory/.dtprofileXsession.d 程序檔之後,Xsession 顯示蓋住螢幕的歡迎訊息。 您可以自訂顯示的歡迎訊息,或完全關閉此訊息。 dthello 用戶端是用於顯示此訊息的。

如果要改變訊息文字,請藉由修改 dtstart_hello[0] 變數來變更 dthello 選項。

如果要變更 dtstart_hello[0],請建立設定新值的 /etc/dt/config/Xsession.d 程序檔。如果要為所有使用者顯示這一天的訊息,請建立可執行的 shksh 程序檔,例如,/etc/dt/config/Xsession.d/myvars,並設定如下的 tstart_hello[0]

 dtstart_hello[0]="/usr/dt/bin/dthello -file /etc/motd&"

同樣地,使用者可以藉由在 HomeDirectory/.dtprofile 中設定 dtstart_hello[0] 來變更他們的階段作業的歡迎訊息。

如果要關閉歡迎訊息,請設定 dtstart_hello[0]=" "。

有關 dthello 更多的資訊,請參閱 dthello 線上援助頁。

設定桌上管理系統搜尋路徑

桌上管理系統搜尋路徑是在登入時由 dtsearchpath 所建立的。有兩大類由 dtsearchpath 所使用的環境變數:

輸入變數—數值是由系統管理或一般使用者所設定的整個系統的變數以及個人環境變數。

輸出變數—由 dtsearchpath 建立與指派值的變數。每個變數的值都是桌上管理系統階段作業的搜尋路徑。

如果要改變 dtsearchpath 的指令行選項,請修改 dtstart_searchpath 變數。如果要變更所有使用者的 dtstart_searchpath 變數,請建立可執行的 shksh 程序檔(例如 /etc/dt/config/Xsession.d/myvars),並設定 dtstart_searchpath 如下:

 dtstart_searchpath="/usr/dt/bin/dtsearchpath"

使用者同樣地可以僅為他們自己的階段作業變更 dtsearchpath,方法是在 HomeDirectory/.dtprofile 中設定 dtstart_searchpath

有關 dtsearchpath 的更多資訊,請參閱 第 9章, 桌上管理系統搜尋路徑。有關 dtsearchpath 選項的更多資訊,請參閱 dtsearchpath 線上援助頁。

收集可供使用的應用程式

設定桌上管理系統搜尋路徑之後的下一步就是使用 dtappgather 收集可供使用的應用程式。 如果要改變 dtappgather 的指令行選項,請修改 dtstart_appgather 變數。 如果要變更所有使用者的 dtstart_appgather 變數,請建立可執行的 shksh 程序檔(例如 /etc/dt/config/Xsession.d/myvars),並設定 dtstart_appgather 如下:

 dtstart_appgather="/usr/dt/bin/dtappgather &"

使用者同樣地可以僅為他們自己的階段作業變更 dtappgather,方法是在 HomeDirectory/.dtprofile 中設定 dtstart_appgather

有關 dtappgather 選項的更多資訊,請參閱 dtappgather(4) 線上援助頁。

選擇性找出 .profile 或 .login 程序檔的來源

Xsession 能夠搜尋使用者的傳統 HomeDirectory /.profileHomeDirectory /.login 程序檔。依照預設值,此能力是取消的。如果要告訴 Xsession 去搜尋 .profile.login 程序檔,請設定 DTSOURCEPROFILEtrue

如果要變更所有使用者的 DTSOURCEPROFILE ,請建立設定新值的 /etc/dt/config/Xsession.d 程序檔。如果要設定所有使用者的 DTSOURCEPROFILEtrue,請建立可執行的 shksh 程序檔,例如,/etc/dt/config/Xsession.d/myvars,並設定如下的 DTSOURCEPROFILE

DTSOURCEPROFILE=true

使用者可以同樣地經由在 HomeDirectory/.dtprofile 中將 DTSOURCEPROFILE 設定為 true, 變更他們自己的階段作業的 DTSOURCEPROFILE

啟動 ToolTalk 傳訊常駐程式

ToolTalk 訊息常駐程式 ttsession 使獨立的應用程式能夠彼此通信而不需對彼此有直接的認識。應用程式會建立並發送 ToolTalk 訊息以彼此通信。 ttsession 在網路上通信以發送訊息。

如果要改變 ttsession 的指令行選項,請修改 dtstart_ttsession 變數。 如果要變更所有使用者的 dtstart_ttsession 變數,請建立可執行的 shksh 程序檔(例如 /etc/dt/config/Xsession.d/myvars ),並設定如下的 dtstart_ttsession

 dtstart_ttsession="/usr/dt/bin/ttsession -s"

使用者同樣地可以為他們自己的階段作業變更 ttsession,方法是在 HomeDirectory/.dtprofile 中設定 dtstart_ttsession

有關 ttsession 選項的更多資訊,請參閱 ttsession 線上援助頁。有關 ttsession 的更多資訊,請參閱 Common Desktop Environment: ToolTalk Messaging Overview

啟動階段作業管理者用戶端

此刻,Xsession會啟動 /usr/dt/bin/dtsession,此啟動會使階段作業啟動程序繼續進行 。

載入階段作業資源

階段作業管理者使用 X 伺服器 RESOURCE_MANAGER 屬性以使桌上管理系統資源可供所有的應用程式使用。階段作業管理者載入 RESOURCE_MANAGER 由:

桌上管理系統預設值資源可以在 /usr/dt/config/language /sys.resources 中找到。 這些資源將會經由 RESOURCE_MANAGER 屬性供每個使用者的階段作業使用。此檔案不應編輯,因為在後續的桌上管理系統安裝時會將它覆寫。

您可以藉由建立 /etc/dt/config/language /sys.resources 來增加系統預設資源。 在此檔案中,您可以為所有的桌上管理系統使用者置換預設值資源或指定其它的資源。既然此檔案是在階段作業啟動期間合併到桌上管理系統預設值資源內的,此檔案中應只放入新的或更新的資源規格。此檔案中所指定的資源將會經由 RESOURCE_MANAGER 屬性供每個使用者的階段作業使用。此檔案中所指定的資源,對於桌上管理系統預設值資源檔案中所指定的那些資源具有優先順序。

使用者可以使用其 HomeDirectory/.Xdefaults 檔案來增加桌上管理系統預設值與整個系統的資源。 此檔案中所指定的資源將可經由 RESOURCE_MANAGER 屬性供每個使用者的階段作業使用。此檔案中所指定的資源對於桌上管理系統預設值或系統管理者資源檔案中所指定的那些具有優先順序。


註解 –

X 工具箱本身的公用程式指定它將會從 RESOURCE_MANAGER 或從 HomeDirectory /.Xdefaults 其中之一而非兩者載入應用程式的資源。 一般而言,這表示會略過使用者的 HomeDirectory /.Xdefaults 檔案。 然而,階段作業管理者藉由在如上述的階段作業啟動時將其合併至 HomeDirectory 內以供應 HomeDirectory/ RESOURCE_MANAGER 。如果使用者變更 HomeDirectory /.Xdefaults,對新的應用程式而言,要到使用者呼叫重新載入資源動作時才看得到變更。 重新載入資源動作將會指示階段作業管理者重新載入具有預設值、整個系統以及使用者指定的資源之 RESOURCE_MANAGER 。此動作會使對整個系統與個人資源檔案所做的變更可供應用程式使用。


有關更多的資訊,請參閱:

啟動色彩伺服器

階段作業管理者作為桌上管理系統的色彩伺服器,並提供以下可用於配置它的 dtsession 資源集。

foregroundColor—控制是否配置前景色彩的像素

dynamicColor—指定是否配置唯讀色彩

shadowPixmaps—指定是要配置頂端陰影或底部陰影的色彩

colorUse—限制色彩配置

writeXrdbColors—指定是否在資源資料庫中放入 *background*foreground 資源

您可以藉由在該檔案中建立 /etc/dt/config/language/sys.resources 與指定色彩伺服器資源來設定所有使用者的色彩伺服器資源。

使用者同樣地可以藉由在 HomeDirectory /.Xdefaults 中指定色彩資源來為自己的階段作業設定色彩伺服器資源。

有關設定色彩伺服器資源的更多資訊,請參閱 管理色彩

啟動工作區管理者

階段作業管理者負責啟動工作區管理者。依照預設值 /usr/dt/bin/dtwm 會啟動。替代視窗管理者可以用 wmStartupCommand 資源來指定。

您可以藉由建立 /etc/dt/config/language /sys.resources 與指定該檔案中具有 Dtsession*wmStartupCommand 資源的視窗管理者之完整路徑名稱及選項來指定替代視窗管理者。

使用者同樣地可以僅為他們自己的階段作業指定替代視窗管理者,方法是在 HomeDirectory/.Xdefaults 中指定 Dtsession*wmStartupCommand

有關視窗管理者的更多資訊,請參閱 第 16章, 自訂工作區管理者

啟動階段作業應用程式

在啟動階段作業時,階段作業管理者將會重新啟動作為部分階段作業儲存的任何應用程式。被視為使用者起始階段作業的應用程式所回復之系統預設集,可以在 /usr/dt/config/language/sys.session 中找到。此檔案不應編輯,因為它將會在後續的桌上管理系統安裝時無條件地覆寫。

有關更多的資訊,請參閱 dtsessionfile (4) 線上援助頁。

系統管理者可以藉由將 /usr/dt/config/language/sys.session 複製到 /etc/dt/config/language/sys.session 並且修改後面那個檔案,來將啟動為使用者初始階段作業一部份的應用程式集取代掉。不像資源檔案,此檔案將會用作桌上管理系統預設檔案的完整取代,因此您可以複製系統預設檔案並作必要的修改。

其它的階段作業啟動自訂

本節涵蓋:

設定環境變數

    如果要設定整個系統的環境變數,請在設定並匯出變數的 /etc/dt/config/Xsession.d 目錄中建立檔案。

例如,如果您想要建立可執行的 ksh 程序檔,/etc/dt/config/Xsession.d/myvars, 包含:

	export MYVARIABLE="value"

然後,在下次登入時,變數 MYVARIABLE 將會設定在每個使用者的環境中。

    如果要設定個人環境變數,請在 HomeDirectory /.dtprofile 中設定變數。

例如:

	export MYVARIABLE="value"

下次登入時,在每個使用者的環境中設定變數 MYVARIABLE


註解 –

階段作業管理者不會自動讀取 .profile.login 檔案。然而,可以配置它以使用這些檔案;請參閱 選擇性找出 .profile 或 .login 程序檔的來源


設定資源

    如果要設定整個系統的資源,請將資源增加至檔案 /etc/dt/config/language /sys.resources。 (您可能必須建立此檔案。)


註解 –

.dtprofile 只支援 /bin/sh/bin/ksh語法。


例如,如果您在 /etc/dt/config/C/sys.resources 中,指定:

 	AnApplication*resource: value

那麼資源 AnApplication*resource 將在下次登入時設定在每一個使用者的 RESOURCE_MANAGER 屬性中。

    如果要設定個人資源,請將資源增加至檔案 HomeDirectory /.Xdefaults 中。

設定顯示器特定的資源

您可以在系統上設定所有桌上管理系統使用者的特定顯示器資源。而且,使用者可以設定限制為其自己的階段作業之特定顯示器資源。此項設定使您能夠視使用者使用何種顯示器以登入桌上管理系統來指定特定顯示器。

    如果要在系統上設定所有桌上管理系統使用者的特定顯示器資源,請建立指定特定顯示器資源的檔案 /etc/dt/config/language /sys.resources

    如果要設定個人特定顯示器資源,請在 HomeDirectory /.Xdefaults 中指定該資源。

    您藉由將這些資源附於 cpp 條件式敘述中來定義它們。A DISPLAY_displayname 巨集是根據 $DISPLAY 變數的值來定義的。 這是藉由轉換所有的 .(句點)與 :(冒號)字元為 _(底線)、去除任何螢幕說明以及最後將字首 DISPLAY_ 加於結果所完成的。

    例如, $DISPLAY:0 將是DISPLAY_0,而 $DISPLAY blanco.gato.com:0.0 將是 DISPLAY_blanco_gato_com_0。 結果值可作為階段作業資源檔中的 cpp 測試的一部份。例如,如果您在 /etc/dt/config/C/sys.resources 中,可以指定:

    Myapp*resource: 值
    #ifdef DISPLAY_blanco_gato_com_0  Myapp*resource: specialvalue1  
    #endif
    #ifdef DISPLAY_pablo_gato_com_0  Myapp*resource: specialvalue2  
    #endif

    資源 MyApp*resource 將在 MyApp*resource 中設定為 specialvalue1,若使用者在顯示器 blanco.gato.com:0 登入的話; 設定為 specialvalue2,若使用者在 pablo.gato.com:0; 登入的話,以及設定為 value,若使用者在另一個顯示器上登入的話。

變更起始階段作業的應用程式

您可以指定替代應用程式,將其視為使用者起始階段作業的一部份啟動。

  1. /usr/dt/config/language/sys.session 複製到 /etc/dt/config/language/sys.session 中。

  2. 修改新的 sys.session 檔案。

    sys.session 中每個項目的出現如:

    	dtsmcmd -cmd command_and_options
    

    如果要將其它的應用程式視為使用者起始階段作業的一部份啟動,請以完整的路徑名稱指定新的 sys.session 項目。例如,如果要將 /usr/bin/X11/xclock 視為使用者起始階段作業的一部份啟動,請增加 xclock 項目至 /etc/dt/config/C/sys.session

    	#  	
    	# Start up xclock...  	
    	#
    	dtsmcmd -cmd "/usr/bin/X11/xclock 
    -digital"

設定特定顯示器的階段作業

使用者可以設定特定顯示器的階段作業以將階段作業調整到特定的顯示器。

    HomeDirectory/.dt/sessions 目錄複製到 HomeDirectory/.dt/ 此處的顯示器是真正的非限定的主機名稱 (pablo:0 是有效的, pablo.gato.com:0 unix:0 則是無效的)。

例如,如果要建立顯示器 pablo.gato.com:0 的特定顯示器階段作業:

cp -r HomeDirectory/.dt/sessions HomeDirectory /.dt/pablo:0

當使用者下次登入顯示器 pablo.gato.com:0 時,階段作業管理者將會啟動該特定顯示器的階段作業。

在階段作業啟動與登出時執行其它指令

當使用者登入其桌上管理系統階段作業時,他們可以指定啟動其它指令。對於設定未由階段作業管理者儲存的 X 設定值,這是很有用的。例如,使用者可以使用 xsetroot 來自訂 root(工作區)指標。另一種用途是啟動無法由階段作業管理者儲存與回復的應用程式。

在階段作業啟動時執行其它的指令

    建立包含指令的檔案 HomeDirectory /.dt/sessions/sessionetc

一般而言,此檔案為程序檔且必須有執行許可權。sessionetc 中啟動的程序應於背景中執行。


註解 –

請勿使用 sessionetc 啟動將透過階段作業管理者自動回復的用戶端。這樣做可能會啟動多個應用程式副本。您可能無法立刻看到副本,因為視窗可能相互堆疊。


在登出時執行其它指令

sessionetc 的姐妹檔案為 sessionexit。使用 sessionexit 以執行不是由階段作業管理者所處理的階段作業結束時的一些作業。

    建立包含指令的檔案 HomeDirectory /.dt/sessions/sessionexit

如同 sessionetc,此檔案通常是具有執行許可權的程序檔。

從備份回復階段作業

當階段作業管理者儲存階段作業時,如果使用的是特定顯示器階段作業,階段作業資訊會儲存於 HomeDirectory /.dt/sessions 目錄中或 HomeDirectory /.dt/ 顯示器目錄中。 在這些目錄中,階段作業管理者會建立名為 目前 的子目錄以儲存個別的目前或主階段作業的資訊。 在儲存階段作業資訊之前,階段作業管理者會以該名稱製作前階段作業的備份並將其儲存於 current.oldhome.old 中。

  1. 從登入螢幕使用單視窗階段作業或指令行登入來登入。

  2. 將備份階段作業目錄複製到作用中的名稱。例如,如果要回復備份主階段作業:

    	cp -r HomeDirectory/.dt/sessions/home.old \
     	HomeDirectory/.dt/sessions/home

    可以用相同的方式回復特定顯示器的階段作業。

調查階段作業啟動問題

    檢查檔案 HomeDirectory/.dt/startlog 中。

階段作業管理者在此檔案中登錄每個使用者的階段作業啟動進度。

階段作業管理者檔案及目錄