セッション・マネージャは、デスクトップを起動し、実行中のアプリケーション、カラー、フォント、マウス動作、音量、およびキーボード・クリックを自動的に保存および復元します。この章の構成は次のとおりです。
セッション・マネージャを使用して、次の作業を実行できます。
すべてのデスクトップ・ユーザの初期セッションをカスタマイズする
すべてのデスクトップ・ユーザの環境とリソースをカスタマイズする
セッション起動メッセージを変更する
セッション起動ツールとデーモンのパラメータを変更する
すべてのユーザのデスクトップ・カラーの使用法をカスタマイズする
セッションとは、ユーザのデスクトップに存在するアプリケーション、設定、およびリソースのコレクションです。セッションの管理は、セッション・マネージャによるセッションの保存および復元を可能にする規約とプロトコルのセットです。システムにログインすると、前回ログオフした時に提供されていたのと同じ実行中のアプリケーション、設定、およびリソースのセットを得ることができます。デスクトップに最初にログインした時は、デフォルトの初期セッションが読み込まれます。その後、セッション・マネージャは現在のセッションとホーム・セッションの概念をサポートします。
デスクトップに最初にログインしたときに、セッション・マネージャはシステムのデフォルト値を使用して初期セッションを作成します。デフォルトでは、ファイル・マネージャと、ヘルプ・ボリュームのデスクトップの紹介が起動されます。
保存済みのホーム・セッション、保存済みの現在のセッション、またはシステム・デフォルトの初期セッションからログイン時に復元されたものかどうかにかかわらず、実行中のセッションは常に現在のセッションと見なされます。スタイル・マネージャの [起動] 設定に基づきセッションを終了すると、セッション・マネージャは現在のセッションを自動的に保存します。もう一度デスクトップにログインすると、セッション・マネージャは前に保存した現在のセッションを再起動します。これは、最後にログアウトしたときと同じ状態にデスクトップが復元されることを意味します。
ログアウトしたときの状態に関係なく、ログインするたびにデスクトップを同じ状態に復元させることもできます。現在のセッションの状態を保存し、その後スタイル・マネージャの [起動] 設定を使用して、ユーザがログインするたびにセッション・マネージャにそのセッションを起動させることができます。
特定のディスプレイに対して固有のセッションを実行するために、ディスプレイに固有のセッションを作成できます。作成するために、ユーザは HomeDirectory/.dt/sessions ディレクトリを HomeDirectory/.dt/display にコピーできます。この場合、display は実際に存在する修飾されていないホスト名です (たとえば、pablo:0 は有効で、pablo.gato.com:0 や unix:0 は無効です)。ユーザがディスプレイ pablo:0 にログインすると、セッション・マネージャはそのディスプレイに固有のセッションを起動します。
セッション・マネージャは、/usr/dt/bin/Xsession によって起動されます。ログイン・マネージャを使用してログインすると、Xsession がデフォルトとして起動されます。
オプションとして、従来のキャラクタ・モード (getty)・ログインを使用してログインし、xinit などの X サーバを起動するツールを使用して、セッション・マネージャを手動で起動できます。たとえば、xinit /usr/dt/bin/Xsession のように指定します。
セッション・マネージャは起動すると、次の手順に従ってセッションを起動します。
次の節では、上記の手順について説明します。
セッションの起動時に、Xsession スクリプトは、HomeDirectory/.dtprofile スクリプトを参照します。HomeDirectory/.dtprofile スクリプトは、セッションに対して環境変数を設定できる /bin/sh または /bin/ksh スクリプトです。環境変数の設定の詳細は、「追加セッション起動のカスタマイズ」を参照してください。
デスクトップに最初にログインしたときなど HomeDirectory/.dtprofile スクリプトが存在しない場合、Xsession はデスクトップのデフォルトの sys.dtprofile を HomeDirectory/.dtprofile にコピーします。
デスクトップのデフォルトは、/usr/dt/config/sys.dtprofile です。sys.dtprofile スクリプトをカスタマイズするには、sys.dtprofile を /usr/dt/config から /etc/dt/config にコピーし、新規ファイルを編集します。
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/.dtprofile スクリプトと Xsession.d スクリプトを参照した後、Xsession は画面をカバーするウェルカム・メッセージを表示します。表示されるウェルカム・メッセージは、カスタマイズしたり、メッセージを完全にオフにしたりできます。dthello クライアントはメッセージを表示するのに使用します。
メッセージ・テキストを変更するには、dtstart_hello[0] 変数を変更することにより dthello オプションを変更します。
dtstart_hello[0] を変更するには、新しい値を設定する /etc/dt/config/Xsession.d スクリプトを作成します。すべてのユーザにその日のメッセージを表示するには、実行可能な sh または ksh スクリプト (たとえば、/etc/dt/config/Xsession.d/myvars) を作成し、dtstart_hello[0] を次のように設定します。
dtstart_hello[0]="/usr/dt/bin/dthello -file /etc/motd &"
同様に、ユーザは HomeDirectory/.dtprofile に dtstart_hello[0] を設定することにより、それらのセッションのウェルカム・メッセージを変更できます。
ウェルカム・メッセージをオフにするには、dtstart_hello[0]="" を設定します。
dthello の詳細は、dthello(1X) のマニュアル・ページを参照してください。
デスクトップ検索パスは、dtsearchpath によるログイン時に作成されます。dtsearchpath によって使用される環境変数のカテゴリは 2 種類あります。
入力変数 - 値がシステム管理者かエンド・ユーザによって設定されるシステム共通環境変数と個人用環境変数
出力変数 - dtsearchpath によって作成され、値が割り当てられた変数。各変数の値はデスクトップ・セッションの検索パスです。
dtsearchpath のコマンド行オプションを変更するには、dtstart_searchpath 変数を変更します。すべてのユーザの dtstart_searchpath 変数を変更するには、実行可能な sh または ksh スクリプト (たとえば、/etc/dt/config/Xsession.d/myvars) を作成し、dtstart_searchpath を次のように設定します。
dtstart_searchpath="/usr/dt/bin/dtsearchpath"
同様に、HomeDirectory/.dtprofile に dtstart_searchpath を設定することによってのみ、ユーザのセッションの dtsearchpath オプションを変更できます。
dtsearchpath の詳細は、第 9 章「デスクトップ検索パス」を参照してください。dtsearchpath オプションの詳細は、dtsearchpath(1) のマニュアル・ページを参照してください。
デスクトップ検索パスの設定の次の手順は、dtappgather を使用して使用可能なアプリケーションを収集することです。dtappgather のコマンド行オプションを変更するには、dtstart_appgather 変数を変更します。すべてのユーザの dtstart_appgather 変数を変更するには、実行可能な sh または ksh スクリプト (たとえば、/etc/dt/config/Xsession.d/myvars) を作成し、dtstart_appgather を次のように設定します。
dtstart_appgather="/usr/dt/bin/dtappgather &"
同様に、HomeDirectory/.dtprofile に dtstart_appgather を設定することによって、ユーザのセッションのみの dtappgather オプションを変更できます。
dtappgather オプションの詳細は、dtappgather(4) のマニュアル・ページを参照してください。
Xsession は、従来の HomeDirectory/.profile スクリプトまたは HomeDirectory/.login スクリプトを参照できます。デフォルトではこの機能は使用できません。Xsession に .profile スクリプトか .login スクリプトを参照するように通知するには、DTSOURCEPROFILE
に true を設定します。
すべてのユーザの DTSOURCEPROFILE
を変更するには、新しい値を設定する /etc/dt/config/Xsession.d スクリプトを作成します。すべてのユーザに対して DTSOURCEPROFILE
に true を設定するには、実行可能な sh または ksh スクリプト (たとえば、/etc/dt/config/Xsession.d/myvars) を作成し、DTSOURCEPROFILE
を次のように設定します。
DTSOURCEPROFILE=true
同様に、HomeDirectory/.dtprofile で DTSOURCEPROFILE
に true を設定することによって、ユーザのセッションの DTSOURCEPROFILE
を変更できます。
ToolTalk メッセージ・デーモンの ttsession により、互いに依存しないアプリケーションは、お互いについて直接認識していなくても交信できます。アプリケーションは、お互いに交信できるように ToolTalk メッセージを作成して送信します。ttsession はネットワーク上で交信し、メッセージを配信します。
ttsession のコマンド行オプションを変更するには、dtstart_ttsession 変数を変更します。すべてのユーザの dtstart_ttsession 変数を変更するには、実行可能な sh または ksh スクリプト (たとえば、/etc/dt/config/Xsession.d/myvars) を作成し、dtstart_ttsession を次のように設定します。
dtstart_ttsession="/usr/dt/bin/ttsession -s"
同様に、 HomeDirectory/.dtprofile に dtstart_ttsession を設定することによって、ユーザのセッションの ttsession オプションを変更できます。
ttsession オプションの詳細は、ttsession(1) のマニュアル・ページを参照してください。ttsession の詳細は、『共通デスクトップ環境 ToolTalk メッセージの概要』を参照してください。
この時点で、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/.Xdefault ファイルが無視されることを意味します。しかし、セッション・マネージャは上述のように、セッションの起動時に HomeDirectory/.Xdefaults を RESOURCE_MANAGER
にマージすることにより、HomeDirectory/.Xdefaults を格納します。
HomeDirectory/.Xdefaults を変更する場合、[リソースの再読込み] アクションを起動するまで新規アプリケーションはこの変更を表示できません。[リソースの再読込み] アクションは、デフォルト・リソース、システム共通リソース、およびユーザ指定のリソースで RESOURCE_MANAGER
を再読み込みするようにセッション・マネージャに通知します。これにより、システム共通リソース・ファイルと個人用リソース・ファイルをアプリケーションが使用できるように変更されます。
詳細は、次の項目を参照してください。
dtresourcesfile(4) のマニュアル・ページ
セッション・マネージャは、デスクトップのカラー・サーバとして機能し、そのサーバをを構成するのに使用できる次のような dtsession リソースのセットを提供します。
foregroundColor - フォアグラウンド・カラーにピクセルを割り当てるかどうかを制御する。
dynamicColor - 読み込み専用カラーを割り当てるかどうか指定する。
shadowPixmaps - トップ・シャドウまたはボトム・シャドウにカラーを割り当てるかどうかを指定する。
writeXrdbColors - *background リソースと *foreground リソースをリソース・データベースに格納するかどうか指定する。
/etc/dt/config/language/sys.resources を作成し、そのファイルの中にカラー・サーバを指定して、すべてのユーザに対してカラー・サーバのリソースを設定できます。
同様に、HomeDirectory/.Xdefaults にカラー・サーバのリソースを指定することによって、ユーザのセッションに対してのカラー・サーバのリソースを設定できます。
カラー・サーバのリソースの設定の詳細は、「カラーの管理」を参照してください。
セッション・マネージャは、ワークスペース・マネージャを起動します。デフォルトでは、/usr/dt/bin/dtwm が起動されます。wmStartupCommand リソースを使用すると、代わりのウィンドウ・マネージャを指定できます。
/etc/dt/config/language/sys.resources を作成し、そのファイルにある Dtsession*wmStartupCommand リソースで絶対パス名とウィンドウ・マネージャのオプションを指定して、すべてのユーザの dtwm に代わるウィンドウ・マネージャを指定できます。
同様に、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 にコピーし、コピーしたファイルを変更することにより、ユーザの初期セッションの一部として起動されるアプリケーションのセットを置き換えることができます。リソース・ファイルとは違い、このファイルはデスクトップのデフォルト・ファイルを完全に置き換えたものとして使用されますので、システムのデフォルト・ファイルのコピーを作成し、必要に応じて変更できます。
この節では、次の作業について説明します。
環境変数の設定
リソースの設定
ディスプレイに依存するセッションの使用
ログイン時のスクリプトの実行
バックアップ・セッションの復元
たとえば、実行可能な sh または ksh スクリプトである /etc/dt/config/Xsession.d/myvars を作成すると、次の行が含まれています。
export MYVARIABLE="value"
変数 MYVARIABLE
は、次のログイン時に各ユーザの環境に設定されます。
たとえば次の行により、変数 MYVARIABLE
は、次のログイン時に各ユーザの環境に設定されます。
export MYVARIABLE="value"
セッション・マネージャは .profile または .login ファイルを自動的に読み込みません。しかし、これらのファイルを使用するために構成することはできます。詳細は、「オプションとしての .profile または .login スクリプトの参照」を参照してください。
.dtprofile は、/bin/sh または /bin/ksh 構文だけをサポートします。
たとえば、/etc/dt/config/C/sys.resources に下記の行を指定すると、リソース AnApplication*resource は、次のログイン時に各ユーザの RESOURCE_MANAGER
属性に設定されます。
AnApplication*resource: value
個人用リソースを設定するには、HomeDirectory/.Xdefaults ファイルにリソースを追加します。
システム上のすべてのデスクトップ・ユーザに対してディスプレイに固有のリソースを設定できます。また、ユーザのセッションに制限されたディスプレイに固有のリソースを設定できます。この設定により、ユーザがデスクトップにログインするディスプレイに応じて、リソースを指定できるようになります。
システム上のすべてのデスクトップ・ユーザのディスプレイに固有のリソースを設定するには、ディスプレイに固有のリソースを指定する /etc/dt/config/language/sys.resources ファイルを作成します。
個人用ディスプレイに固有のリソースを設定するには、HomeDirectory/.Xdefaults ファイルにリソースを指定します。
cpp 条件文でこれらのリソースを囲むことにより、リソースを区切ります。DISPLAY_displayname
マクロが $DISPLAY
変数の値に応じて定義されます。これは、すべての . (ピリオド) と : (コロン) 文字を _ (下線文字) に変換し、画面の指定を取り除き、最後に DISPLAY_
という接頭辞をその結果に付けます。
たとえば、:0 の $DISPLAY
は DISPLAY_0
になり、blanco.gato.com:0.0 の $DISPLAY
は DISPLAY_blanco_gato_com_0 になります。結果の値は、セッションのリソース・ファイルの cpp テストの一部として使用できます。たとえば、/etc/dt/config/C/sys.resources では、次のように指定します。
Myapp*resource: value
#ifdef DISPLAY_blanco_gato_com_0 Myapp*resource: specialvalue1 #endif
#ifdef DISPLAY_pablo_gato_com_0 Myapp*resource: specialvalue2 #endif
この場合、リソース MyApp*resource は、ディスプレイ blanco.gato.com:0 にログインするときは specialvalue1 に対して、pablo.gato.com:0; にログインするときは specialvalue2 に対して、別のディスプレイにログインするときは value に対して、それぞれ RESOURCE_MANAGER
に設定されます。
ユーザの初期セッションの一部として起動する代わりのアプリケーションを指定できます。
/usr/dt/config/language/sys.session を /etc/dt/config/language/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/display にコピーします。この場合 display は実際に存在する修飾していないホスト名です (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 を使用してルート (ワークスペース)・ポインタをカスタマイズできます。もう 1 つの使用方法は、セッション・マネージャによって保存および復元できないアプリケーションを起動することです。セッションが復元されたときにアプリケーションが再起動しない場合、ユーザはこの方法を使用して、クライアントを起動できます。
コマンドが入っている HomeDirectory/.dt/sessions/sessionetc ファイルを作成します。
通常、このファイルはスクリプトで、実行権を持っていなければなりません。sessionetc で起動されるプロセスはバックグラウンドで実行されなければなりません。
セッション・マネージャによって自動的に復元されるクライアントを起動するために、sessionetc を使用しないでください。使用すると、複数のアプリケーションのコピーが起動されてしまいます。ウィンドウは、もう 1 つのウィンドウの上部に重なることがあるので、コピーをすぐに見つけられない可能性があります。
sessionetc に付属したファイルは sessionexit です。セッション・マネージャが処理しないセッション終了時のオペレーションのいくつかを実行するには、sessionexit を使用します。
HomeDirectory/.dt/sessions/sessionexit ファイルを作成します。
sessionetc と同様に、このファイルは通常は実行権を持っているスクリプトです。
セッション・マネージャがセッションを保存すると、ディスプレイに固有のセッションを使用している場合は、セッション情報が HomeDirectory/.dt/sessions ディレクトリまたは HomeDirectory/.dt/display ディレクトリに保存されます。現在のセッションまたはホーム・セッションそれぞれに関する情報を格納するために、セッション・マネージャは current または home という名前のサブディレクトリをこれらのディレクトリに作成します。セッション情報が格納される前に、セッション・マネージャはその名前で以前のセッションのバックアップを作成し、current.old か home.old に格納します。
ログイン画面から [復旧セッション] か [コマンド行ログイン] を使用してログインします。
バックアップのセッション・ディレクトリを有効な名前にコピーします。たとえば、バックアップのホーム・セッションを復元するには、次のようにします。
cp -r HomeDirectory/.dt/sessions/home.old HomeDirectory/.dt/sessions/home
ディスプレイに固有のセッションも同じ方法で復元できます。
/usr/dt/bin/Xsession
/usr/dt/config/Xsession.d/*
/usr/dt/bin/dtsession
/usr/dt/bin/dtsession_res
HomeDirectory/.dt/sessions/current
HomeDirectory/.dt/sessions/home
HomeDirectory/.dt/display/current
HomeDirectory/.dt/display/home