アクションを作成するには、次の 2 つの方法があります。
アクション作成デスクトップ・アプリケーションを使用する
手入力でアクション定義を作成する
手入力でアクションを作成するには、データベース・ファイルを編集する必要があります。この章では、アクション定義を手入力で作成する方法について説明します。
アクションの概要については、第 10 章「アクションとデータ型の概要」を参照してください。
アクション作成ツールの使用の詳細は、第 11 章「アクション作成ツールを使ったアクションとデータ型の作成」を参照してください。
アクション定義の参照情報については、dtactionfile(4) のマニュアル・ページを参照してください。
COMMAND
MAP
TT_MSG
アクション作成ツールは、COMMAND アクションと MAP アクション型を作成するように設計されています。すべての TT_MSG アクションは、手動で作成しなければなりません。
詳細は、「アクション作成ツールの制限」を参照してください。
「コマンド・アクション」は、アプリケーションやユーティリティを起動するコマンド、シェル・スクリプト、またはオペレーティング・システム・コマンドを実行します。アクションの定義には、実行されるコマンド (EXEC_STRING) も含まれます。
アクション作成ツールは、コマンド・アクションの最も一般的な型を作成するのに使用できます。しかし、アクションを手動で作成しなければならない状況のときもあります。たとえば、アクションが次のものを指定する場合には、手動で COMMAND アクションを作成しなければなりません。
各引き数に対して異なるプロンプトをもつ複数のファイル引き数
アクション呼び出し - 他のアクションを呼び出すアクションの機能
引き数の数に依存する動作 - 異なる数のファイル引き数に対してさまざまな動作を行うアクションを作成する機能
リモート実行ホスト - アクション定義を持っているシステム以外のシステムにあるアプリケーションを実行する機能
ユーザの変更 - 異なるユーザとしてアクションを実行する機能 (たとえば、ルート・パスワードをプロンプトしてからルートとして実行する)
「マップ・アクション」は、コマンドや ToolTalk メッセージを直接指定すること以外の、別のアクションに「マップされる」アクションです。
マッピングは、アクションの代替名を指定する機能を提供します。たとえば、[アイコンエディタ] という名前の組み込みコマンド・アクションは、アイコン・エディタを起動します。データベースにも [開く] アクションが含まれていますが、(ARG_TYPE フィールドによって) 定義はビットマップ・ファイルとピックスマップ・ファイルに制限され、 [アイコンエディタ] アクションにマップされます。これによりユーザは、ファイル・マネージャのビットマップ・ファイルまたはピックスマップ・ファイルを選択してから [選択] メニューより [開く] を選択することにより、アイコン・エディタを起動できます。
アクション作成ツールは、[開く] アクションと [印刷] アクションの制限されたマッピングを提供します。その他のすべてのマップ・アクションは、手動で作成しなければなりません。
TT_MSG アクションは、ToolTalk メッセージを送信します。すべての TT_MSG アクションは、手動で作成しなければなりません。
この節では、アクション定義の構成ファイルを作成する方法について説明します。
アクション定義が入っている構成ファイルは、次の要件を満たしていなければなりません。
ファイルは、 name.dt という命名規則を使用しなければなりません。
ファイルは、データベース (アクションとデータ型) 検索パス上になければなりません。デフォルトの検索パスは次のとおりです。
個人用アクション - HomeDirectory/.dt/types
システム共通アクション - /etc/dt/appconfig/types/language
組み込みアクション - /usr/dt/appconfig/types/language。ただし、このディレクトリは使用しないでください。
アクションおよびデータ型検索パスの変更の詳細は、「検索パスの値の設定」を参照してください。
既存のデータベース・ファイルを開くか、新規のデータベース・ファイルを作成します。
詳細は、「アクションの構成ファイル」を参照してください。
次の構文を使用してアクション定義を作成します。
ACTION action_name { TYPE action_type action_field ... }
action_name - アクションを実行するのに使用する名前
action_type - COMMAND (デフォルト)、MAP、または TT_MSG
action_field - この型のアクションの必須または省略可能なフィールドの 1 つ。すべてのフィールドは、キーワードと値から成ります。ほとんどのアクション・フィールドについて、この章で説明します。
詳細は、dtactionfile(4) のマニュアル・ページを参照してください。
ファイルを保存します。
アクション・アイコンが一意のイメージを持つようにするには、アクションのアイコンを作成します。アイコンのデフォルトの位置は次のとおりです。
個人用アイコン: HomeDirectory/.dt/icons
システム共通アイコン: /etc/dt/appconfig/icons/language
デフォルトの language は C です。
詳細は、「アクションが使用するアイコン・イメージの指定」を参照してください。
[デスクトップツール] アプリケーション・グループにある [アクションの再読込み] をダブルクリックします。
アクションのアクション・ファイルを作成します。アクション・ファイルは、アクションを表すアイコンをファイル・マネージャまたはアプリケーション・マネージャに作成します (アプリケーションを起動するようにアクションが書かれている場合、アイコンは「アプリケーション・アイコン」と呼ばれます)。
アクション・ファイルを作成するには、action_name と同じ名前の実行可能ファイルを作成します。書き込み権を持っているディレクトリに、そのファイルを置くことができます。アクション・ファイルは、好きな数だけ作成できます。
次の手順は、リモート・システム AppServerA にある FAX アプリケーションを起動する個人用アクションを作成します。FAX アプリケーションを起動するコマンドは、次のとおりです。
/usr/fax/bin/faxcompose [filename]
ファイル HomeDirectory/.dt/types/Fax.dt を作成します。
次のアクション定義をファイルに記述します。
ACTION FaxComposer { TYPE COMMAND ICON fax WINDOW_TYPE NO_STDIO EXEC_STRING /usr/fax/bin/faxcompose -c %Arg_1% EXEC_HOST AppServerA DESCRIPTION Runs the fax composer }
WINDOW_TYPE フィールドと EXEC_STRING フィールドは、アクションの動作を説明します。
WINDOW_TYPE - NO_STDIO キーワードは、アクションが端末エミュレータ・ウィンドウで実行する必要がないように指定します。
詳細は、「アクションのウィンドウ・サポートの指定」を参照してください。
EXEC_STRING - 構文 %Arg_1% は、ドロップされたファイルを受け取ります。アクション・アイコンをダブルクリックすると、アクションは空の FAX 作成ウィンドウを開きます。
詳細は、「COMMAND アクションの実行文字列の作成」を参照してください。
ファイルを保存します。
アイコン・エディタを使用して、HomeDirectory/.dt/icons ディレクトリに、次のアイコン・イメージ・ファイルを作成します。
fax.m.pm、サイズ 32x32 ピクセル
fax.t.pm、サイズ 16x16 ピクセル
[デスクトップツール] アプリケーション・グループにある [アクションの再読込み] をダブルクリックします。
書き込み権を持っているディレクトリ (たとえば、ホーム・ディレクトリ) に FaxComposer という名前の実行可能ファイルを作成します。
FAX 送信するほとんどのファイルがテキスト・エディタで作成され、データ型 TEXTFILE (ファイル名は *.txt) であるものとします。
次の手順は、データ型の [選択] メニューに Fax メニュー項目を追加します。
前節で作成したファイル HomeDirectory/.dt/types/Fax.dt を開きます。
次のマップ・アクション定義をファイルに追加します。
ACTION Fax { ARG_TYPE TEXTFILE TYPE MAP MAP_ACTION FaxComposer }
ファイルを保存します。
TEXTFILE のデータ属性定義を /usr/dt/appconfig/types/language/dtpad.dt から新規ファイル HomeDirectory/.dt/types/textfile.dt にコピーします。Fax アクションを ACTIONS フィールドに追加します。
DATA_ATTRIBUTES TEXTFILE { ACTIONS Open,Print,Fax ICON Dtpenpd ... }
ファイルを保存します。
アプリケーション・マネージャを開き、[デスクトップツール] アプリケーション・グループにある [アクションの再読込み] をダブルクリックします。
新規または編集されたアクション定義を有効にするには、デスクトップはデータベースを再読み込みしなければなりません。次のいずれかを実行します。
[デスクトップツール] アプリケーション・グループを開き、[アクションの再読込み] をダブルクリックします。
アクション・データベースは、次の操作を実行する場合にも再読み込みされます。
ログインする
ワークスペース・マネージャを再起動する
[ファイル] メニューから [保存] を選択して [アクション作成] ウィンドウにあるアクションを保存する
「アクション・ファイル」は、ファイル・マネージャまたはアプリケーション・マネージャにあるアクションを視覚的に表現するために作成されるファイルです。
アクション・ファイルのアイコンはアクションを表現するので、「アクション・アイコン」と呼ぶこともあります。基本となるアクションがアプリケーションを起動する場合、アクション・ファイル・アイコンを「アプリケーション・アイコン」と呼びます。
アクション・アイコンをダブルクリックすると、アクションを実行します。アクション・アイコンはドロップ領域にもなります。
たとえば、次のようなアクション定義の場合、アクション・ファイルは MyFavoriteApp という名前の実行可能ファイルになります。
ACTION MyFavoriteApp { EXEC_STRING Mfa -file %Arg_1% DESCRIPTION Runs MyFavoriteApp ICON Mfapp }
ファイル・マネージャとアプリケーション・マネージャでは、MyFavoriteApp ファイルはアイコン・イメージ Mfapp.size.type を使用します。MyFavoriteApp のアイコンをダブルクリックすると、アクションの実行文字列を実行し、アイコンのアイテムヘルプは DESCRIPTION フィールド (Runs MyFavoriteApp) の内容になります。
アクション定義に LABEL フィールドが含まれている場合、ファイル・マネージャとアプリケーション・マネージャでは、ファイル名 (action_name) ではなく、このフィールドの内容によってアクション・ファイルにラベルが付けられます。たとえば、アクション定義に次のものが含まれる場合、アクション・アイコンには Favorite Application というラベルが付けられます。
ACTION MyFavoriteApp { LABEL Favorite Application ... }
ICON フィールドを使用して、アクション用に作成されたアクション・アイコン用にファイル・マネージャとアプリケーション・マネージャで使用するアイコンを指定します。
アイコンを指定しない場合、システムはデフォルトのアクション・アイコン・イメージ・ファイル /usr/dt/appconfig/icons/language/Dtactn.* を使用します。
デフォルトのアクション・アイコンは、次のリソースを使用して変更できます。
*actionIcon: icon_file_name
icon_file_name は、ベース名または絶対パスを指定できます。
ベース・ファイル名
ベース・ファイル名は、アイコン・イメージが入っているファイル名から、サイズ (m と t) とイメージ型 (bm と pm) を表すファイル拡張子を除いたものです。たとえば、ファイル名が GameIcon.m.pm と GameIcon.t.pm の場合は、GameIcon を使用します。
ベース・ファイル名を使用する場合、アイコン・ファイルは次のアイコン検索パスにあるディレクトリになければなりません。
個人用アイコン: HomeDirectory/.dt/icons
システム共通アイコン: /etc/dt/appconfig/icons/language
アイコン・ファイルへの絶対パス。完全なファイル名も含まれます。
アイコン・ファイルがアイコン検索パス上にない場合だけ絶対パスを使用してください。たとえば、アイコン・ファイル GameIcon.m.pm がディレクトリ /doc/projects にある場合、アイコン検索パスにはないので、ICON フィールドの値は /doc/projects/GameIcon.m.pm になります。
作成しなければならないアイコンのサイズと、それに対応するファイル名を表 12-1 に示します。
サイズ (ピクセル単位) |
ビットマップ名 |
ピックスマップ名 |
---|---|---|
48x48 |
name.l.bm |
name.l.pm |
32x32 |
name.m.bm |
name.m.pm |
16x16 |
name.t.bm |
name.t.pm |
システムのどの使用可能なアクション (組み込みアクションも含む) も変更できます。
組み込みアクション・データベースを変更する際には注意してください。組み込みアクションは、デスクトップ・アプリケーション上で動作するように設計されています。
変更するアクション定義を検出します。
組み込みアクション: /usr/dt/appconfig/types/language
システム共通アクション: /etc/dt/appconfig/types/language
個人用アクション: HomeDirectory/.dt/types
システム位置が追加されている可能性もあります。アクション用にシステムが使用している位置のリストを参照するには、次のコマンドを実行します。
dtsearchpath -v
必要に応じて、アクション定義のテキストを、次のいずれかのディレクトリにある新規または既存のファイルにコピーします。
システム共通アクション: /etc/dt/appconfig/types/language
個人用アクション: HomeDirectory/.dt/types
/usr/dt/appconfig/types/language ディレクトリにあるファイルは編集してはいけませんので、組み込みアクションをコピーしなければなりません。
アクション定義を編集します。
編集が終わったら、ファイルを保存します。
[デスクトップツール] アプリケーション・グループにある [アクションの再読込み] をダブルクリックします。
アクションを呼び出すと、システムはデータベースで一致するアクション名を検索します。その名前に対して 2 つ以上のアクションが存在する場合、システムはどちらを使用するかを決定するために優先規則を使用します。
他の優先規則が適用されない場合、優先順位は定義の位置に基づきます。次のリストは、優先度の高い順に並べてあります。
個人用アクション (HomeDirectory/.dt/types)
システム共通のローカル・アクション (/etc/dt/appconfig/types/language)
システム共通のリモート・アクション (hostname:/etc/dt/appconfig/types/language)。検索されたリモート・ホストは、アプリケーション検索パス上にあります。
組み込みアクション (/usr/dt/appconfig/types/language)
指定のディレクトリ内で、*.dt ファイルはアルファベット順に読み込まれます。
ARG_CLASS、ARG_TYPE、ARG_MODE、または ARG_COUNT によって制限されたアクションは、制限されていないアクションよりも優先されます (これらの 4 つのフィールドのデフォルト値は * です)。
2 つ以上の制限が適用される場合、優先順位の高い順に並べると次のようになります。
ARG_CLASS
ARG_TYPE
ARG_MODE
ARG_COUNT
2 つ以上の制限された ARG_COUNT が存在する場合、優先順位の高い順に並べると次のようになります。
特定の整数値 n
<n
>n
*
たとえば、次のアクション定義の一部分について考えてみます。
ACTION EditGraphics # EditGraphics-1 { ARG_TYPE XWD ... }
ACTION EditGraphics # EditGraphics-2 { ARG_COUNT 0 ... }
ACTION EditGraphics # EditGraphics-3 { ARG_TYPE * ... }
EditGraphics アクション・アイコンをダブルクリックすると、引き数が指定されず ARG_COUNT 0 が優先されるので、EditGraphics-2 を起動します。XWD 型ファイル引き数を指定すると XWD ARG_TYPE が指定されるので、EditGraphics-1 が使用されます。EditGraphics-3 は、その他のファイル引き数すべてに対して使用されます。
COMMAND アクションには、必ず ACTION と EXEC_STRING の 2 つのフィールドが必要です。
ACTION action_name { EXEC_STRING execution_string }
実行文字列は、COMMAND アクション定義の最も重要な部分です。この文字列は、[端末エミュレータ] ウィンドウで実行するコマンド行と類似の構文を使用しますが、ファイルと文字列の引き数を処理するための追加構文も含みます。
実行文字列には、次のものが含まれます。
ファイル引き数と非ファイル引き数
シェル構文
実行可能ファイルの絶対パスまたは名前
引き数は、コマンドまたはアプリケーションを適切に実行するのに必要な情報です。たとえば、テキスト・エディタでファイルを開くのに使用できるコマンド行について考えてみます。
dtpad filename
このコマンドでは、filename は dtpad コマンドのファイル引き数です。
アプリケーションやコマンドのように、アクションは引き数を持つことができます。COMMAND アクションが使用できるデータ型は、次の 2 つです。
ファイル
文字列データ
実行文字列は、シェルを介してではなく直接実行されます。しかし、実行文字列でシェルを明示的に呼び出すことができます。
たとえば、次のようになります。
EXEC_STRING ¥ /bin/sh -c ¥ 'tar -tvf %(File)Arg_1% 2>&1 | ¥${PAGER:-more};¥ echo "¥¥n*** Select Close from the Window menu to close ***"'
アプリケーションが PATH 変数にリストされているディレクトリにある場合は、単純な実行可能ファイル名を使用できます。アプリケーションが他にある場合は、実行可能ファイルへの絶対パスを使用しなければなりません。
コマンド行からアプリケーションを起動するのに使用する EXEC_STRING に対しても同じ構文を使用します。
次の実行文字列は、デジタル・クロックでクライアント xclock を起動します。コマンド行にはコマンド行オプションが含まれていますが、引き数は必要ありません。
EXEC_STRING xclock -digital
ファイル引き数に対して、次のいずれかの構文を使用します。
%Arg_n%
%(File)Arg_n%
Arg_n に指定された引き数は (デフォルトでは) ファイルと見なされるので、(File) はオプションになります。(%(String)Arg_n% 構文の使用方法については、「文字列としてのファイル引き数の解釈」を参照してください。)
この構文により、アクション・アイコンにデータ・ファイル・オブジェクトをドロップし、そのファイル引き数でアクションを起動できます。コマンド行で n 番目の引き数を置き換えます。ローカル・ファイルまたはリモート・ファイルのどちらも使用できます。
次の例は、ディレクトリ引き数によってのみ動作するアクションのための定義の一部を示します。ディレクトリがアクション・アイコンにドロップされると、アクションは読み取り権および書き込み権の両方を持つディレクトリにあるすべてのファイルのリストを表示します。
ACTION List_Writable_Files { ARG_TYPE FOLDER EXEC_STRING /bin/sh -c 's -l %Arg_1% | grep rw-' ... }
ファイル引き数に対して、次の構文を使用します。
%(File)"prompt"%
この構文は、アクション・アイコンをダブルクリックしたときに、ファイル名の要求を表示するアクションを作成します。
たとえば次の実行文字列は、wc -w コマンドのファイル引き数を要求するダイアログ・ボックスを表示します。
EXEC_STRING wc -w %(File)"Count words in file:"%
ファイル引き数に対して、次のいずれかの構文を使用します。
%Arg_n"prompt"%
%(File)Arg_n"prompt"%
この構文は、次の動作を行うアクションを作成します。
ファイル引き数としてドロップされたファイルを受け取る
アクション・アイコンをダブルクリックしたときに、ファイル名を要求するダイアログ・ボックスを表示する
たとえば次の実行文字列は、ドロップされたファイルで lp -oraw を実行します。アイコンをダブルクリックするとアクションが起動する場合、ダイアログ・ボックスが表示され、ファイル名を要求します。
EXEC_STRING lp -oraw %Arg_1"File to print:"%
非ファイル・パラメータに対して、次のいずれかの構文を使用します。
%"prompt"%
%(String)"prompt"%
引用符で囲まれたテキストは、デフォルトでは文字列データとして解釈されるので、(String) はオプションになります。この構文は、非ファイル・データを要求するダイアログ・ボックスを表示します。ファイル名を要求するときは、この構文は使用しないでください。
たとえば、次の実行文字列は xwd コマンドを実行し、各ピクセルに追加される値を要求します。
EXEC_STRING xwd -add %"Add value:"% -out %Arg_1"Filename:"%
引き数に対して次の構文を使用します。
%(String)Arg_n%
たとえば次の実行文字列は、コマンド lp -tbanner filename を使用して、ファイル名が入っているバナーとファイルを一緒に印刷します。
EXEC_STRING lp -t%(String)Arg_1% %(File)Arg_1"File to print:"%
次のように実行文字列にシェルを指定します。
/bin/sh -c 'command' /bin/ksh -c 'command' /bin/csh -c 'command'
さらに複雑な実行文字列で、シェルの処理を必要とし、ファイル引き数を受け取ります。
EXEC_STRING /bin/sh -c 'tbl %Arg_1"Man Page:"% | troff -man'
次の実行文字列では、引き数は圧縮ファイルである必要があります。アクションはファイルを圧縮解除し、lp -oraw を使用してそのファイルを印刷します。
EXEC_STRING /bin/sh -c 'cat %Arg_1 "File to print:"% | ¥ uncompress | lp -oraw'
アクションが複数のファイル引き数を処理するには、次の 3 つの方法があります。
アクションは繰り返し (各引き数に対しては 1 回ずつ) 実行できます。EXEC_STRING に単一のファイル引き数があり、アクション・アイコンに複数のファイルをドロップすることにより複数のファイル引き数が指定される場合、アクションはファイル引き数ごとに別々に実行されます。
たとえば、複数のファイル引き数が次のアクション定義に対して指定される場合、DisplayScreenImage アクションは繰り返し実行されます。
ACTION DisplayScreenImage { EXEC_STRING xwud -in %Arg_1% ... }
アクションは、2 つ以上の交換不可能なファイル引き数を使用できます。たとえば次の例では、特定の順番で並んでいる 2 つの一意のファイルが必要です。
xsetroot -cursor cursorfile maskfile
次の構文規約のいずれか 1 つを使用します。
アクションにファイル名をプロンプトさせる場合、ファイル引き数ごとに次の構文を使用します。
%(File)"prompt"%
引き数ごとに異なる prompt 文字列を使用します。
たとえば、次の実行文字列は 2 つのファイルをプロンプトします。
EXEC_STRING xsetroot -cursor %(File)"Cursor bitmap:"% ¥ %(File)"Mask bitmap:"%
ドロップされたファイルを受け取るには、各ファイル引き数に対して次の構文を使用します。
%Arg_n%
この場合、引き数ごとに異なる n 値を使用します。たとえば次のようになります。
EXEC_STRING diff %Arg_1% %Arg_2%
次の構文規約のいずれか 1 つを使用します。
ドロップされたファイルを受け取り、command file 1 file 2 ... という形式でコマンドを発行するアクションを作成するには、ファイル引き数に対して次の構文を使用します。
%Args%
複数のドロップされたファイルを受け取る、またはダブルクリックしたときに単一ファイルのプロンプトを表示するアクションを作成するには、ファイル引き数に対して次の構文を使用します。
%Arg_1"prompt"% %Args%
アクションは、command file 1 file 2 ... という形式でコマンドを発行します。
次の実行文字列は、前の例と似たアクションを作成しますが、この例のアクションをダブルクリックするとプロンプトを表示します (ファイル引き数はありません)。
EXEC_STRING pr %Arg_1"File(s) to print:"% %Args%
複数のドロップされたファイル引き数を受け取り、command file 1 file 2 ... という形式のコマンド行を実行するには、次の構文を使用します。
%Args%
次の実行文字列は、複数のファイルに対して Checkout という名前のスクリプトを実行します。
EXEC_STRING /usr/local/bin/Checkout ¥ %Arg_1"Check out what file?"% %Args%
COMMAND アクションがデスクトップ上でウィンドウをサポートするには、次の方法があります。
アプリケーションがそれ自身のウィンドウを持っている場合、追加のウィンドウ・サポートを提供しないようにアクションに書き込むことができます。このオプションは、直接ユーザ入力を必要とせず、アクションが出力を持っていないコマンドを実行するときにも使用されます。
アプリケーションを端末エミュレータウィンドウで実行しなければならない場合、ウィンドウを開いてからアプリケーションを実行するようにアクションに書き込むことができます。この場合、いくつかの端末オプションがあります。
WINDOW_TYPE フィールドを使用して、アクションが必要とするウィンドウ・サポートの型を表 12-2 のように指定します。
表 12-2 WINDOW_TYPE フィールドと提供されているウィンドウ・サポート
指定されているウィンドウ・サポート |
|
---|---|
指定されません。アプリケーションがそれ自身のウィンドウを持っているか、コマンドが表示できる出力を持っていない場合は、NO_STDIO を使用します。 |
|
常時端末エミュレータ・ウィンドウ。アクションは端末ウィンドウを開き、明示的に閉じるまで開いたままにします。ウィンドウにデータを入力できます。入力を行い、出力を作成し、その後終了するコマンド (たとえば ls directory など) で使用します。 |
|
一時端末エミュレータ・ウィンドウ。アクションは端末ウィンドウを開き、コマンドが完了するとすぐに閉じます。全画面コマンド (たとえば vi など) で使用します。 |
アクション定義にある TERM_OPTS フィールドを使用して、端末エミュレータのコマンド行オプションを指定します。
たとえば、次のアクションは実行ホストをプロンプトします。
ACTION OpenTermOnSystemUserChooses { WINDOW_TYPE PERM_TERMINAL EXEC_HOST %(String)"Remote terminal on:"% TERM_OPTS -title %(String)"Window title:"% EXEC_STRING $SHELL }
アクションが使用するデフォルトの端末エミュレータは dtterm です。これを別の端末エミュレータに変更できます。デフォルトの端末エミュレータは、アクションが使用する端末エミュレータを明示的に指定しないときに使用されます。
アクションが使用する端末エミュレータは、次のコマンド行オプションを持っていなければなりません。
-title window_title
-e command
次の 2 つのリソースは、アクションが使用するデフォルトの端末エミュレータを決定します。
localTerminal リソースは、ローカル・アプリケーションが使用する端末エミュレータを指定します。
*localTerminal: terminal
たとえば、次のようになります。
*localTerminal: xterm
remoteTerminal リソースは、リモート・アプリケーションが使用する端末エミュレータを指定します。
*remoteTerminal: host:terminal [,host:terminal...]
たとえば、次のようになります。
*remoteTerminal: sysibm1:/usr/bin/xterm,syshp2:/usr/bin/yterm
特定の型の引き数にアクションを制限すると、アクションが改良されます。たとえば、PostScript ファイル引き数に対してのみ PostScript ファイルのビューアを呼び出すようにアクションを制限すると便利です。つまり制限があると、PostScript ファイル以外を指定した場合、アクションはエラー・ダイアログを返します。
次のことに基づいてアクションを制限できます。
ファイル引き数のデータ型
ファイル引き数の数 - たとえば、引き数なしと 1 つ以上の引き数を指定する場合とでは、アクション・アイコンのドロップ&ダブルクリック動作が異なります。
引き数の読み取りまたは書き込みモード
ARG_TYPE フィールドを使用して、アクションが有効であるデータ型を指定します。データ属性名を使用します。
コンマでエントリを区切って、データ型のリストを入力できます。
たとえば、次のアクション定義は Gif データ型が作成されている場合の例です。
ACTION Open_Gif { TYPE COMMAND LABEL "Display Gif" WINDOW_TYPE NO_STDIO ARG_TYPE Gif ICON xgif DESCRIPTION Displays gif files EXEC_STRING xgif }
ARG_COUNT フィールドを使用して、アクションが受け入れることができる引き数の数を指定します。有効な値は次のとおりです。
* (デフォルト) - 任意の数の引き数。その他の値は * よりも優先されます
n - 任意の負でない値 (0 を含む)
>n - n よりも大きい引き数
<n - n よりも小さい引き数
ARG_COUNT の使用方法の 1 つは、アイコンをダブルクリックするか、そのアイコンにファイルをドロップするかに応じて、異なるアクション・アイコン動作を提供することです。次の「異なるダブルクリック・アンド・ドロップ動作を提供するには」を参照してください。
次の手順を使用して、ドロップされたファイルを受け取るアクションを作成しますが、アクション・アイコンをダブルクリックしてもファイルを要求しません。
ダブルクリック機能のためのアクション定義を作成します。
ARG_COUNT フィールドを使用して 0 引き数を指定します。ドロップされた引き数を受け取らない EXEC_STRING の構文を使用します。
ドロップ機能のための 2 番目のアクション定義を作成します。
ARG_COUNT フィールドを使用して >0 引き数を指定します。ドロップされたファイルを受け取る EXEC_STRING の構文を使用します。
たとえば、次の 2 つのコマンド行は vedit という名前のエディタを起動するのに使用できるとします。
ファイル引き数を使用しないでエディタを起動するには、次のようにします。
vedit
読み専用ドキュメントとして開くファイル引き数でエディタを起動するには、次のようにします。
vedit -R filename
次の 2 つのアクションは、Vedit という名前のアクションのためのドロップ&ダブルクリック機能を作成します。ARG_COUNT 0 は暗示的なドロップ機能定義の ARG_COUNT * よりも明確なので、データベースで一致するものを検索するときには、最初のアクションが優先されます。
# Double-click functionality ACTION Vedit { TYPE COMMAND ARG_COUNT 0 WINDOW_TYPE PERM_TERMINAL EXEC_STRING vedit } # Drop functionality ACTION Vedit { TYPE COMMAND WINDOW_TYPE PERM_TERMINAL EXEC_STRING vedit -R %Arg_1% }
ARG_MODE フィールドを使用して、引き数の読み取りまたは書き込みモードを指定します。有効な値は次のとおりです。
* (デフォルト) - 任意のモード
!w - 書き込み不可
w - 書き込み可能
アクションとリモート実行について説明する場合、次の 2 つの用語がよく使用されます。
データベース・ホスト - アクション定義が入っているシステム
実行ホスト - 実行可能ファイルを実行するシステム
ほとんどの場合、アクションとそのアプリケーションは同じシステム上にあります。つまり、アクションのデフォルトの実行ホストはデータベース・ホストであるため、特別な構文は必要ありません。
しかし、実行ホストがデータベース・ホストと異なる場合、アクション定義はどこで実行文字列を実行するか指定しなければなりません。
異なるシステム上にアクションとアプリケーションを配置するための機能は、デスクトップのクライアントサーバ・アーキテクチャの一部です。ネットワーク・アプリケーションの詳細は、「アプリケーション・サービスの管理」を参照してください。
アクション定義 EXEC_HOST フィールドを使用して、アプリケーションの位置を指定します。
EXEC_HOST の有効な値は次のとおりです
%DatabaseHost% - アクションが定義されるホスト
%LocalHost% - アクションが呼び出されるホスト (「セッション・サーバ」)
%DisplayHost% - X サーバを実行中のホスト (X 端末では使用できません)
%SessionHost% - コントロールを行うログイン・マネージャが実行中のホスト
hostname - 名前付きホスト。アクションが 1 つの特定ホスト上に必ず呼び出される環境でこの値を使用します
%"prompt"% - アクションが呼び出されるたびにホスト名をプロンプトします。
デフォルト値は、%DatabaseHost% と %LocalHost% です。したがって、EXEC_HOST フィールドが削除されると、アクションはアクション定義が入っているホストで最初にコマンドの実行を試みます。これに失敗すると、アクションはセッション・サーバでコマンドの実行を試みます。
このフィールドは、アクション定義が入っているホストでアクションがアプリケーションの実行を試みるように指定します。これに失敗すると、アクションはホスト ddsyd でアプリケーションの実行を試みます。
EXEC_HOST %DatabaseHost%, ddsyd
文字列変数と環境変数をアクションおよびデータ型定義ファイルに含むことができます。
文字列変数定義は、定義の位置からファイルの最後まで有効です。データベース用のグローバルな文字列変数はありません。
文字列変数と環境変数が同じ名前の場合は、文字列変数が優先されます。
次の構文を使用します。
set variable_name=value
変数名に英数字と下線文字 (_) を使用できます。各変数定義は、別の行になければなりません。
たとえば次のようになります。
set Remote_Application_Server=sysapp set Remote_File_Server=sysdata
次の構文を使用します。
$[{]variable_name[}]
たとえば次のようになります。
EXEC-HOST $Remote_Application_Server CWD /net/${Remote_File_Server}/doc/project
次の構文を使用して環境変数を参照します。
$[{]variable[}]
データベースが読み込まれると、変数は拡張されます (その値に置き換わります)。文字列変数と環境変数が同じ名前の場合は、文字列変数が優先されます。
たとえば、次の実行文字列はログイン名が入っているバナーでファイルを印刷します。
EXEC-STRING lp -t$LOGNAME %(File)Arg_1%
デスクトップは、コマンド行からアクションを実行するための dtaction コマンドを提供します。dtaction を使用して、次の部分からアクションを実行できます。
スクリプト
他のアクション
端末エミュレータ・コマンド行
dtaction [-user user_name] [-execHost hostname] action_name [argument [argument]...]
-user user_name - 別のユーザとしてアクションを実行するための機能を提供します。dtaction が user_name 以外のユーザによって呼び出される場合、パスワードのプロンプトが表示されます。
-execHost hostname - COMMAND アクションの場合のみ。コマンドが実行されるホストを指定します。
argument - アクションに対する引き数。通常はファイル引き数です。
dtaction クライアントは、追加のコマンド行オプションを持っています。詳細は、dtaction(1) のマニュアル・ページを参照してください。
アクションの EXEC_STRING にある dtaction を使用します。
たとえば、次のアクションは Spell という名前の組み込みアクション (アクションはアプリケーション・マネージャで「スペルチェック」というラベルが付けられます) を使用します。新規アクションは、テキスト・エディタと Spell アクションを実行し、別の端末エミュレータ・ウィンドウにスペルミスを表示します。
ACTION EditAndSpell { WINDOW_TYPE NO_STDIO EXEC_STRING /bin/sh -c 'dtaction Spell ¥ %Arg_1"File:"%; dtpad %Arg_1%' }
EXEC_STRING にある次の構文を使用します。
EXEC_STRING dtaction -user user_name action_name [file_argument]
新規ユーザ (user_name は、次のいずれかの機構を介してディスプレイをシステムへアクセスしなければなりません。
ログイン・ユーザの .Xauthority ファイルにある読み取り権
xhost アクセス権
たとえば、次の 2 つのアクションは、root になるための機能と app-defaults ファイルを編集するための機能を提供します。
ACTION AppDefaults { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/dt/bin/dtaction -user root ¥ EditAppDefaults %Arg_1"File:"% } ACTION EditAppDefaults { WINDOW_TYPE TERMINAL EXEC_STRING /bin/sh -c 'chmod +w %Arg_1%; ¥ vi %Arg_1%; chmod -w %Arg_1%' }
データ型の検索パスには、言語に依存する位置も含まれています。デスクトップは、LANG の値を使用して、データ型定義が検索される位置を決定します。
ローカライズされたアクション定義は、アクション検索パスに応じて適切な言語に依存するディレクトリに置かなければなりません。
デフォルトの検索パスは次のとおりです。
個人用アクション: HomeDirectory/.dt/types
システム共通アクション: /etc/dt/appconfig/types/language
組み込みアクション: /usr/dt/appconfig/types/language
適切な言語に依存するディレクトリ (たとえば、/etc/dt/appconfig/types/japanese) にファイルを作成します。
アクション定義を言語に依存する構成ファイルにコピーします。
たとえば、アクション定義を、
app_root/dt/appconfig/types/C/file.dt
から
app_root/dt/appconfig/types/japanese/newfile.dt
にコピーします。
LABEL フィールドを追加するか、既存の LABEL フィールドを変更します。
LABEL string
アプリケーション・マネージャとファイル・マネージャは、ラベル文字列を使用してアクションのアイコンを識別します。
アクション定義にある次のいずれかのフィールドをローカライズします。
ローカライズされたアイコンの場合: ICON
ローカライズされたアイテムヘルプの場合: DESCRIPTION
ローカライズされたプロンプトの場合: EXEC_STRING にある引用符で囲まれたテキスト
次の情報は、ToolTalk メッセージをサポートするアプリケーションに対してのみ適用されます。
TT_MSG
アクション型を使用して、ToolTalk メッセージを送信するアクションを作成します。
ACTION action_name { TYPE TT_MSG ... }
ToolTalk addressing フィールドは、常に TT_PROCEDURE に設定されます。
ToolTalk disposition フィールドは、静的メッセージ・パターンの指定がデフォルトの値です。
TT_MSG
アクション型がサポートしていないものは、次のとおりです。
ToolTalk オブジェクト指向メッセージ
メッセージ内のコンテキスト引き数
表 12-3 に、キーワードと TT_MSG アクションの使用法を示します。
表 12-3 TT_MSG アクション・キーワードと使用法
キーワード |
使用法 |
---|---|
TT_CLASS |
ToolTalk class メッセージ・フィールドの値を定義します。 |
TT_SCOPE |
ToolTalk scope メッセージ・フィールドの値を定義します。 |
TT_OPERATION |
ToolTalk operation メッセージ・フィールドの値を定義します。 |
TT_FILE |
ToolTalk file メッセージ・フィールドの値を定義します。 |
TT_ARGn_MODE |
n 番目のメッセージ引き数の ToolTalk mode 属性の値を定義します。 |
TT_ARGn_VTYPE |
n 番目のメッセージ引き数の ToolTalk vtype 属性の値を定義します。 |
TT_ARGn_VALUE |
n 番目のメッセージ引き数の値を定義します。 |