xsm はセッションマネージャである。セッションとはアプリケーション
のグループであり、それぞれのアプリケーションは固有の状態を持っている。
xsm を使うと、ユーザは任意のセッションを作ることができる。例えば、
「軽い」セッションや「開発」セッション、「X 端末」セッションを持つこと
ができる。それぞれのセッションには固有のアプリケーションの組を持たせる
ことができる。セッションにおいては、「チェックポイント」を行ってアプリ
ケーションの状態を保存することや、「シャットダウン」を行って状態を保存
してセッションを終えることができる。再びシステムにログインしたときには、
特定のセッションを呼び出すことや、不要になったセッションを削除すること
ができる。
セッションマネージャによっては、セッションで起動するアプリケーションの リストを手動で指定することができるだけのものもある。xsm はもっと 強力であり、アプリケーションを起動してこれを自動的にセッションの一部に することができる。単純な話で言えば、xsm はこの機能をユーザに与え て、セッション内のアプリケーションを簡単に定義できるために便利である。 しかし、xsm の本当の実力は、たくさんのアプリケーションの状態の保 存と復元を行うときに生かされる。
.xsession で最後に実行するプログラムは xsm でなければなら
ない。この設定では、ユーザが xsm を使ってセッションをシャットダ
ウンをしたときにセッションが実際に終了する。
セッションマネージャの目的はセッションにログインしたときにクライアント を再起動することなので、一般的に .xsession ファイルから直接アプリケー ションを指定してはならない。その代わりに、アプリケーションはセッション 内で起動すべきである。しかし、アプリケーションによっては「セッション対 応」していないタイプのものもある点に注意すること。xsm では、これ らのアプリケーションを手動でセッションに追加することができる(「クラ イアントリスト」セクションを参照)。
起動ファイルのそれぞれの行は、アプリケーションを起動するコマンドである。 サンプルの起動ファイルを以下に示す:
<ファイル先頭>
twm
smproxy
xterm
<ファイル末尾>
セッションメニューからは、以下の操作を行うことができる:
xsm のメインウィンドウでは以下の操作を行うことができる:
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 ウィンドウは削除される。
チェックポイントを行っているセッションに名前が割り当てられていない場合、
ユーザはセッション名を指定する必要がある。さもなければ、ユーザは現在の
セッション名を使ってチェックポイントを行うか、新しいセッション名を指定
することができる。指定されたセッション名が既に存在している場合、ユーザ
は別の名前を指定するか、既に存在するセッションを上書きするか選ぶことが
できる。ロックされているセッションを上書きすることはできない。
チェックポイントを実行するとき、ユーザは Save Type を指定しなけ
ればならない。これは、セッション内のアプリケーションにどれだけの状態を
保存しなければならないかを教えるものである。
Local タイプを指定すると、アプリケーションはユーザから見た状態を
復元するために十分な情報を保存しなければならない。これは他のユーザから
見た状態に影響を与えてはならない。例えば、エディタは編集バッファの内容
、カーソルの位置等を持つ一時ファイルを作る。
Global タイプを指定すると、アプリケーションは全てのデータを一時
的ではなく、グローバルにアクセスできる記憶装置に保存しなければならない。
例えば、エディタは単に編集したファイルを保存する。
Both タイプを指定すると、アプリケーションは上述の動作を両方とも
行う。例えば、エディタは編集したファイルを保存し、カーソルの位置などの
情報を持つテンポラリファイルを生成する。
Save Type に加え、ユーザは Interact Style を指定しなければ
ならない。
None を指定すると、アプリケーションは状態保存の間にユーザに対す
る対話処理を行ってはならない。
Errors を指定すると、アプリケーションはエラーが起こったときに限
りユーザに対する対話処理を行ってよい。
Any タイプを指定すると、アプリケーションは任意の目的でユーザに対
する対話処理を行ってよい。xsm は、ユーザとの対話処理は1つのアプ
リケーションにつき1度しか認めない。
チェックポイントが終わった後、xsm は、状態保存成功の通知を行わな かったアプリケーションのリストを含むウィンドウを必要に応じて表示する。
ユーザは、シャットダウン時にチェックポイントを行うか行わないかを選択す ることができる。
xsm は、SIGUSR1 には以下のオプションを使ってチェックポイントを行 なうことで応答する: 対話処理無し、保存タイプはローカル。このシグナルは リモートからセッションのチェックポイントを行うときにも利用できる。
- アプリケーションが 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 を用いる)が、状態は保存されない。