xsm(1) X セッションマネージャ

書式

xsm [-display display] [-session sessionName] [-verbose]

説明

xsm はセッションマネージャである。セッションとはアプリケーション のグループであり、それぞれのアプリケーションは固有の状態を持っている。 xsm を使うと、ユーザは任意のセッションを作ることができる。例えば、 「軽い」セッションや「開発」セッション、「X 端末」セッションを持つこと ができる。それぞれのセッションには固有のアプリケーションの組を持たせる ことができる。セッションにおいては、「チェックポイント」を行ってアプリ ケーションの状態を保存することや、「シャットダウン」を行って状態を保存 してセッションを終えることができる。再びシステムにログインしたときには、 特定のセッションを呼び出すことや、不要になったセッションを削除すること ができる。

セッションマネージャによっては、セッションで起動するアプリケーションの リストを手動で指定することができるだけのものもある。xsm はもっと 強力であり、アプリケーションを起動してこれを自動的にセッションの一部に することができる。単純な話で言えば、xsm はこの機能をユーザに与え て、セッション内のアプリケーションを簡単に定義できるために便利である。 しかし、xsm の本当の実力は、たくさんのアプリケーションの状態の保 存と復元を行うときに生かされる。

オプション

-display display
xsm が接続するディスプレイを指定する。
-session sessionName
xsm が呼び出すセッションをセッションメニューを使って指定する。
-verbose
デバッグ情報の出力を有効にする。

セットアップ

.xsession ファイル

xsm を使うときには、ユーザの .xsession ファイルを変更する 必要がある:


 .xsession で最後に実行するプログラムは xsm でなければなら ない。この設定では、ユーザが xsm を使ってセッションをシャットダ ウンをしたときにセッションが実際に終了する。

セッションマネージャの目的はセッションにログインしたときにクライアント を再起動することなので、一般的に .xsession ファイルから直接アプリケー ションを指定してはならない。その代わりに、アプリケーションはセッション 内で起動すべきである。しかし、アプリケーションによっては「セッション対 応」していないタイプのものもある点に注意すること。xsm では、これ らのアプリケーションを手動でセッションに追加することができる(「クラ イアントリスト」セクションを参照)。

SM_SAVE_DIR 環境変数

SM_SAVE_DIR 環境変数が定義されている場合、xsm は全ての設定 ファイルをこのディレクトリに保存する。そうでない場合には、これらはユー ザのホームディレクトリに保存される。セッション対応のアプリケーションは チェックポイントファイルを SM_SAVE_DIR ディレクトリに保存するこ とが推奨されるが、ユーザはこのしきたりに依存すべきではない。

デフォルトの起動アプリケーション

初めて xsm を起動したときには、起動するアプリケーションのリスト の位置を特定する必要がある。例えば、リストはウィンドウマネージャ、セッ ション管理プロキシ、xterm 等を含むことがある。xsm は最初にユーザ のホームディレクトリの .xsmstartup ファイルを探す。このファイル が無ければ、xsm はインストール時に設定された system.xsm ファ イルを探す。xsmは、ユーザがセッションを立ち上げるときに「フェー ルセーフ」オプションを提供する点に注意すること。フェールセーフオプショ ンは、単に先に述べたデフォルトのアプリケーションをロードするだけである。

起動ファイルのそれぞれの行は、アプリケーションを起動するコマンドである。 サンプルの起動ファイルを以下に示す:

<ファイル先頭>
twm
smproxy
xterm
<ファイル末尾>

セッションの起動

xsm は起動のときに、ユーザが前にセッションを保存しているかどうか を最初にチェックする。保存されているセッションが無ければ、xsm は デフォルトのアプリケーションのセット(「デフォルトの起動アプリケーショ ン」セクションで説明した)を起動する。少なくとも1つのセッションがある場 合には、セッションメニューが表示される。[-session sessionName] オプションが指定されていれば、セッションメニュー経由で指定されたセッショ ンが読み込まれる。

セッションメニュー

セッションメニューは、ユーザが選ぶことができるセッションのリストを示す。 ユーザは現在選択しているセッションをマウス操作や、キーボードの上下矢印 キーの操作で変更することができる。ロックされている(つまり、他のディス プレイで実行中の)セッションの読み込みや削除はできない点に注意すること。

セッションメニューからは、以下の操作を行うことができる:

Load Session
このボタンを押すと、現在選択されているセッションが読み込まれる。代わり に、リターンキーを押しても現在選択されているセッションが読み込まれるし、 リストからセッションをダブルクリックしてもよい。
Delete Session
この操作は現在選択されているセッションを削除し、このセッションに関連す る全てのアプリケーションのチェックポイントファイルも削除する。ボタンを 押すと、操作を確認するためにもう一度ボタンを押すように問い合わせが行わ れる。
Default/Fail Safe
xsm はデフォルトのアプリケーションのセット(前述の「デフォルトの 起動アプリケーション」セクションで説明)を起動する。これは新しいセッショ ンを起動するときや、セッションの設定ファイルが壊れてユーザが「フェール セーフ」のセッションを起動する場合に便利である。
Cancel
このボタンを押すと、xsm は終了する。また、"Delete Session" をキャ ンセルするためにも使われる。

セッションの制御

読み込むセッションが決まった後、xsm はメインウィンドウを出し、 セッションの一部となるアプリケーションを全て立ち上げる。セッションマネージャ のメインウィンドウのタイトルバーは、読み込まれたセッションの名前となる。

xsm のメインウィンドウでは以下の操作を行える:

Client List
このボタンを押すと、現在のセッション内の全てのクライアントのリストを含 むウィンドウが現われる。それぞれのクライアントに対し、クライアントが動 作しているホストマシンが表示される。クライアントをセッションに追加・削 除すると、このリストには変更が反映される。ユーザは、これらのクライアン トの再起動の方法を制御することができる(後述)。

View Properties ボタンを押すと、現在選択しているクライアントに関 連するセッション管理プロパティを表示することができる。

Clone を押すと、選択されているアプリケーションをもう一つ起動する ことができる。

Kill Client ボタンを押すと、ユーザはセッションからクライアントを 削除することができる。

Restart Hint メニューから再起動のヒントを選択することにより、ク ライアントの再起動を制御することができる。ヒントには以下のものが使用で きる:

- Restart If Running ヒントを指定すると、クライアントが現在のセッ ションが終わった時点でセッションマネージャに接続していれば、次のセッショ ンで再起動される。

- Restart Anyway ヒントを指定すると、クライアントは現在のセッショ ンが終了する前にクライアントが終了した場合でも、次のセッションで再起動 される。

- Restart Immediately ヒントは Restart Anyway と似ているが、 これに加えてクライアントは連続して動作する。つまり、クライアントが終了 した場合に、セッションマネージャは現在のセッションでこのクライアントを 再起動しようとする。

- Restart Never ヒントを指定すると、クライアントは次のセッションで は再起動されない。

全ての X アプリケーションが「セッション対応」ではない点に注意すること。 セッション対応していないアプリケーションとは、X セッション管理プロトコ ルをサポートしていないものか、セッション管理プロキシ(「プロキシ」セク ションを参照)が発見できないものである。xsm を使うと、ユーザはこ のようなアプリケーションを手動でセッションに追加することができる。 Client List ウィンドウの最も下の部分はテキスト入力フィールドがあ り、ここにアプリケーションのコマンドを入力することができる。 それぞれのコマンドは、自分自身の行に現われる。この情報はチェックポイン ト時かシャットダウン時にセッションと共に保存される。セッションを再起動 したとき、xsm は通常の「セッション対応」アプリケーションに加えて これらのアプリケーションを再起動する。

Done ボタンを押すと、Client List ウィンドウは削除される。

Session Log...
Session Log ウィンドウはセッションに関する有用な情報を表示する。 例えばセッションが再起動されたときには、再起動のコマンド全てがログウィンドウ に表示される。
Checkpoint
チェックポイントを実行すると、セッション内の全てのアプリケーションに対 して状態を保存するよう指示が行われる。全てのアプリケーションが状態を完 全に保存できるわけではないが、少なくともセッションマネージャがアプリケー ションの再起動に必要なコマンド(全てのコマンド行オプションも含む)を 受け取ることは保証されている。セッションに関係するウィンドウマネージャ は、アプリケーションが同じウィンドウ構成で復帰することを保証すべきであ る。

チェックポイントを行っているセッションに名前が割り当てられていない場合、 ユーザはセッション名を指定する必要がある。さもなければ、ユーザは現在の セッション名を使ってチェックポイントを行うか、新しいセッション名を指定 することができる。指定されたセッション名が既に存在している場合、ユーザ は別の名前を指定するか、既に存在するセッションを上書きするか選ぶことが できる。ロックされているセッションを上書きすることはできない。

チェックポイントを実行するとき、ユーザは Save Type を指定しなけ ればならない。これは、セッション内のアプリケーションにどれだけの状態を 保存しなければならないかを教えるものである。

Local タイプを指定すると、アプリケーションはユーザから見た状態を 復元するために十分な情報を保存しなければならない。これは他のユーザから 見た状態に影響を与えてはならない。例えば、エディタは編集バッファの内容 、カーソルの位置等を持つ一時ファイルを作る。

Global タイプを指定すると、アプリケーションは全てのデータを一時 的ではなく、グローバルにアクセスできる記憶装置に保存しなければならない。 例えば、エディタは単に編集したファイルを保存する。

Both タイプを指定すると、アプリケーションは上述の動作を両方とも 行う。例えば、エディタは編集したファイルを保存し、カーソルの位置などの 情報を持つテンポラリファイルを生成する。

Save Type に加え、ユーザは Interact Style を指定しなければ ならない。

None を指定すると、アプリケーションは状態保存の間にユーザに対す る対話処理を行ってはならない。

Errors を指定すると、アプリケーションはエラーが起こったときに限 りユーザに対する対話処理を行ってよい。

Any タイプを指定すると、アプリケーションは任意の目的でユーザに対 する対話処理を行ってよい。xsm は、ユーザとの対話処理は1つのアプ リケーションにつき1度しか認めない。

チェックポイントが終わった後、xsm は、状態保存成功の通知を行わな かったアプリケーションのリストを含むウィンドウを必要に応じて表示する。

Shutdown
チェックポイントで指定できるオプションは全てシャットダウンでも使えるが、 これに加えてシャットダウンはセッションを終了させる。対話スタイルが Errors または Any ならば、ユーザはシャットダウンをキャンセ ルすることができる点に注意すること。アプリケーションのいずれかが状態の 保存に失敗した場合にも、ユーザはシャットダウンをキャンセルすることがで きる。

ユーザは、シャットダウン時にチェックポイントを行うか行わないかを選択す ることができる。

XSM のシグナルへの応答

xsm は、SIGTERM には次のオプションを使ってシャットダウンを行うこ とで応答する: 高速、対話処理無し、保存タイプはローカル。これにより、シ ステムがシャットダウンされるときに、ユーザのセッションが保存される。こ れはリモートからセッションのシャットダウンを行うときにも利用できる。

xsm は、SIGUSR1 には以下のオプションを使ってチェックポイントを行 なうことで応答する: 対話処理無し、保存タイプはローカル。このシグナルは リモートからセッションのチェックポイントを行うときにも利用できる。

プロキシ

全てのアプリケーションが X セッション管理プロトコルをサポートするよう に修正されていないため、「古い」クライアントがセッションマネージャと一 緒に動作できるようにするプロキシサービスが存在する。セッションに加わる アプリケーションをプロキシが見つけるためには、次の条件のいずれかが真で なければならない:

- アプリケーションが WM_CLIENT_LEADER プロパティを持つトップレベ ルウィンドウをマップしている。このプロパティは、WM_CLASS, WM_NAME, WM_COMMAND, WM_CLIENT_MACHINE プロパティを 持つクライアントリーダーウィンドウへのポインタを与える。

または

- アプリケーションがマップしたトップレベルウィンドウは WM_CLIENT_LEADER プロパティを持たない。しかし、このトップレベル ウィンドウが WM_CLASS, WM_NAME, WM_COMMAND, WM_CLIENT_MACHINE プロパティを持っている。

WM_SAVE_YOURSELF プロトコルをサポートしている アプリケーションが は、セッションマネージャがチェックポイントかシャットダウンを行うたびに WM_SAVE_YOURSELF クライアントメッセージを受け取る。アプリケーショ ンが WM_SAVE_YOURSELF プロトコルをサポートしていなければ、アプリ ケーションを再起動するために十分な情報はプロキシがセッションマネージャ に与える(WM_COMMAND を用いる)が、状態は保存されない。

リモートアプリケーション

リモートマシン上でアプリケーションを再起動するために、xsm はリモー ト実行プロトコルを必要とする。現在のところ、xsmrstart プロトコルをサポートしている。リモートマシン X でアプリケーショ ンを再起動するためには、マシン X には rstart がインストー ルされていなければならない。将来は、他のリモート実行プロトコルがサポー トされるかもしれない。

著者

Ralph Mor, X Consortium
Jordan Brown, Quarterdeck Office Systems