FvwmScript

名前
形式
説明
呼び出し
スクリプトの構造
スクリプトのヘッダ
初期化部分
周期的な作業部分
スクリプトの主要部分
ウィジェットの一覧
命令
引数
関数
分岐やループ
作者
寄与者

名前

FvwmScript - グラフィックユーザインターフェースを構築する モジュール

形式

FvwmPager は fvwm によって実行されなければならず、コマンド ラインからの呼び出しでは動作しません。

説明

FvwmScript は、デストップアクセサリ、ポップアップメニュー のついたボタンパネル、流行の入力部分などの、多くのグラフィ カルなアプリケーションを作り出すことができるようにするよう なモジュールです。起動時に、FvwmScript はコマンドライン で 指定したファイルを読みます。このファイルは、スクリプトを含 んでいますが、スクリプトは、Fvwm の設定ファイル内には入 れ ません。

呼び出し

FvwmScript は、‘Module FvwmScript スクリプト名’ のような行 を .fvwmrc ファイルに入れることで呼び出せます。 FvwmScript で 使 用されるすべてのスクリプトは、.fvwmrc 内のコマンド行 ‘*FvwmScriptPath スクリプトディレクトリパス’ で指 定 し た ディレクトリに置きます。 FvwmScript を fvwm の初期化の間に 起動させる場合はそれ自身を一つの行として置くことができます し、 あ るいはそれを後で呼び出すためにメニューやマウスボタ ン、キーストロークなどに割り当てることも可能 で す。 Fvwm は、設定オプションの ModulePath で指定されたディレクトリを 探して FvwmScript をみつけようとします。

あなたの .fvwmrc ファイルの ModulePath に、 FvwmScript の パスが設定されているか確認してください。

スクリプトの構造

FvwmScript は、特別なプログラミング言語を使います。スクリ プトは 4 つの部分から構成されます。ヘッダ (heading) は、 ウィ ン ドウの一般的な特徴とすべてのウィジェットに関するデ フォルトの属性を持ちます。 2 番目の部分は、スクリプトの 起 動時に実行される命令 (instruction) を持っています。 3 番目 の部分は、1 秒毎に実行される周期的な作業を持ちます。最後の 部 分は、ウィジェットの記述です。ウィジェットは、11 種類の 項目から構成されます: テキストラベル、一行入力、ラジオボタ ン、 チェックボックス、プッシュボタン、水平/垂直スクロール バー、長方形、ポップアップメニュー、swallowexec、ミニス ク ロールバー。

スクリプトのヘッダ

書式は以下の通りです:

WindowTitle string

このオプションは、ウィンドウタイトルを設定します。

WindowSize width height

このオプションは、ウィンドウサイズを設定し ま す。 widthheight は数値です。

WindowPosition x y

このオプションは、ウィンドウの位置を設定します。 xy は数値です。

ForeColor {color}

このオプションは、すべてのウィジェットに対す る デ フォルトの前景色を設定します。

BackColor {color}

こ の オプションは、すべてのウィジェットに対するデ フォルトの背景色を設定します。

HilightColor {color}

このオプションは、すべてのウィジェットに対す る デ フォルトのハイライト色を設定します。

ShadowColor {color}

こ の オプションは、すべてのウィジェットに対するデ フォルトの影の色を設定します。

Font {font}

このオプションは、すべてのウィジェットに対す る デ フォルトのフォントを設定します。

初期化部分

この部分は、起動時に実行される命令を持っています。例:

  Init
   Begin
    Do "Exec cat tada.voc > /dev/dsp"
    WarpPointer 1
    Set $ToDo=Restart
   End

これらの命令は、すべての起動時に、音声を再生し、ポインタを ウィジェット 1 へ移動し、$ToDo を "Restart" に初期化 し ま す。

周期的な作業部分

この部分は、毎秒実行される命令を持ちます。例:

  Periodic Task
   Begin
    If (RemainderOfDiv (GetTime) 10)==0 Then
     Do {Exec xcalc}
   End

この例は、xcalc を 10 秒毎に立ち上げる方法を示しています。

スクリプトの主要部分

スクリプトの 2 番目の部分は、プログラム内で使用されるす べ て の ウィジェットに対する記述を持ちます。ウィジェットのキ ジュツは、2 つの部分からできています。最初の部分は初期属性 を 記 述し、2 番目の部分は、ウィジェットがメッセージを受け とったときに実行される命令を持ちます。すべてのウィジェット はメッセージを送受信できます。すべてのメッセージは、数で特 定されます。メッセージ "UserAction" は、ユーザがウィジェッ トを変更したときに、そのウィジェットに送信されます。書式は 以下の通りです:

Widget

id

# ウィジェットの ID を設定

Property

Type

文字列
Size 幅

高さ
Position

x y
Title

{ 文字列 }
Value

整数
MaxValue

整数
MinValue

整数
Font

文字列
ForeColor

{ 色 }
BackColor

{ 色 }
HilightColor

{ 色 }
ShadowColor

{ 色 }
Flags

Hidden または NoReliefString

オプション ’Flags’ は、そのウィジェットを隠す (hidden) か 否か、そして文字列を浮き彫り (relief) つきで書くか否か、を 指定するのに使います。

  Main
   Case Message of
    SingleClic:
    Begin
     # ウィジェットがメッセージ "SingleClic" を
     # 受け取ったときに実行される命令のリスト。
     # このメッセージはユーザが発生させる。
    End
    1:
    Begin
     # ウィジェットがメッセージ 1 を
     # 受け取ったときに実行される命令のリスト。
    End
   End

ウィジェットの一覧

ウィジェットには 15 種類の型があります。

ItemDraw: アイコン、または文字列を表示。

Title: 表示する文字列。

Icon: 表示するアイコン。

PushButton: アイコン、または文字列つきのプッシュボタンを表 示。

Title: この文字列は、以下の書式を持ちます: {Title of the button|Option 1|Option 2|Option3|...|Option N}。 "Option 1|Option 2|...|Option N" は、右ボタン が 押 されたときに表示されるポップアップメニューで す。

Icon: 表示するアイコン。

RadioButton: 文字列つきのラジオボタンを表示。

Title: ラジオボタンのタイトル。

Value: Value が 1 ならボックスはチェックされ、それ 以外はそうされません。

CheckBox: 文字列つきのチェックボックスを表示。

Title: チェックボックスのタイトル。

Value: Value が 1 ならボックスはチェックされ、それ 以外はそうされません。

TextField: 文字列入力フィールドを表示。これは 1 行文字列の 編集に使えます。

Title: 文字列フィールドの中身。

Value: 入力点の位置。

HScrollBar: 水平スクロールバーを表示。

Value: つまみの位置。

MaxValue: Value の上の限界。

MinValue: Value の下の限界。

VScrollBar: 垂直スクロールバーを表示。

Value: つまみの位置。

MaxValue: Value の上の限界。

MinValue: Value の下の限界。

MiniScrollBar: とても小さい垂直スクロールバーを表示。

Value: つまみの位置。

MaxValue: Value の上の限界。

MinValue: lower limit of Value.

Rectangle: 長方形を表示。このウィジェットは、ウィンドウの 飾りに使えます。

SwallowExec: このウィジェットは、FvwmScript にあるプロセス を生成させ、名前かリソースが Title に等しい最初のウィンド ウを捕み取り、それをスクリプトウィンドウ内に表示させます。

Title: 捕み取ってスクリプトウィンドウ内に表示す る ウィンドウの名前を指定。

SwallowExec: プロセスを生成するために実行するコマ ンドラインを指定。モジュールも swallow できます。

Value: 境界の見た目を指定。-1, 0, 1 のいずれかが指 定可能。

PopupMenu: ポップアップメニューを表示。

Value: どのオプションが選択されるのかを指定。

Title: Title は、 以下の書式を持ちます: {Option 1|Option 2|...|Option N}。 "Option 1|Option 2|...|Option N" は、マウスボタンが押されたときに表 示されるポップアップメニューです。

HDipstick: 水平ものさしを表示。このウィジェットはディスク 使用量の表示に使えます。

Value: ものさしの現在の値を指定。

MinValue: ものさしの最小値を指定。

MaxValue: ものさしの最大値を指定。

VDipstick: 垂直ものさしを表示。

Value: ものさしの現在の値を指定。

MinValue: ものさしの最小値を指定。

MaxValue: ものさしの最大値を指定。

List: 一覧を表示。一覧は、ユーザに色々なオプションからの選 択をさせます。

Value: どのオプションが選択されるのかを指定。

Title: Title はリストに表示されるオプションを含 み ま す。 その書式は以下の通りです: {Option 1|Option 2|...|Option N}。すべてのメニューはウィンドウの 上 に表示されます。

Menu: ユーザにオプションを選択させるメニューを表示。

Value: どのオプションが選択されるのかを指定。

Title: Title はメニューに表示されるオプションを含 みます。その書式は以下の通りです: {Option 1|Option 2|...|Option N}。

命令

以下は、すべての命令の説明です。

HideWidget id : 番号 id のウィジェットを隠します。

ShowWidget id: 番号 id のウィジェットを表示。

ChangeValue id1 id2: 番号 id1 のウィジェットの値を id2 に 設定。

ChangeMaxValue id1 id2: 番号 id1 のウィジェットの最大値を id2 に設定。

ChangeMinValue id1 id2: 番号 id1 のウィジェットの最小値を id2 に設定。

ChangeTitle id1 id2: 番号 id1 のウィジェットのタイトルを id2 に設定。

ChangeIcon id1 id2: 番号 id1 のウィジェットのアイコンを id2 に設定。

ChangeForeColor id1 {color}: 番号 id1 のウィジェットの前景 色を id2 に設定。

ChangeBackColor id1 {color}: 番号 id1 のウィジェットの背景 色を id2 に設定。

.IP "ChangePosition id1 x y: 番号 id1 のウィ ジェットを位置 (x,y) へ移動。"

ChangeSize id1 width height: 番号 id1 のウィジェットのサイ ズを (width,height) に設定。

ChangeFont id1 newfont: 番号 id1 のウィジェットのフォント を newfont に設定。

WarpPointer id: マウスポインタを番号 id のウィジェット内へ 移動。

WriteToFile filename {str1} {str2} ...: ファイル filename にすべての引数 str1, str2, ... をつなげた文字列を書き出し ます。

Do {str1} {str2} ...: すべての引数 str1, str2, ... をつな げたコマンドを実行。

Set $var={str1} {str2} ...: すべての引数を文字列につなげ て、変数 $var にその文字列を設定。

Quit: プログラムを終了。

SendSignal id1 id2: 番 号 id2 のメッセージをウィジェット id1 に送信。

SendToScript id_script {str11} {str2} ...: ID id_script の スクリプトにメッセージを送信。このメッセージは str, str2, ... を連結したもの。

引数

コマンドのほどんどは引数を使用します。引数には、数字と文字 列の 2 種類があります。数値の引数は -32000 と 32000 間の値 で、文字列はカッコで囲まないといけません。変数は文 字 "$" から始める必要があり、数値も文字列も含むことができます。

関数

関数はすべて引数として使用され、文字列、数字の両方を返すこ とができます。書式は以下の通り:

  (function argument1 argument2 ...)

以下は、引数の一覧です:

(GetTitle id): 番 号 id のウィジェットのタイトルを返しま す。

(GetValue id): 番 号 id のウィジェットの現在の値を返しま す。

(GetOutput {str} int1 int2): コマンド str を実行し、その標 準出力を取得し、int1 番目の行内の int2 番目の単語を返しま す。int2 が -1 の場合は、GetOutput は行全体を返します。

(NumToHex int): int の 16 進数値を返します。

(HexToNum {str}): str の 10 進数値を返します。str は 16 進 数値の必要があります。

(Add int1 int2): (int1+int2) の結果を返します。

(Mult int1 int2): (int1*int2) の結果を返します。

(Div int1 int2): (int1/int2) の結果を返します。

(StrCopy {str} int1 int2): int1 と int2 の間の位置の文字列 を返します。例えば、(StrCopy {Hello} 1 2) は {He} を返しま す。

(LaunchScript {str}): この関数は、名前 str のスクリプトを 実行し、その ID 番号を返しま す。 こ の 番 号 は、 関 数 SendToScript と ReceivFromScript を使用するのに必要。文字 列 str はスクリプト名といくつかの引数を持ちます。

(GetScriptArgument {int}): この関数は、関 数 LaunchScript で 使 用 さ れる引数のスクリプトを返します。int が 0 の場 合、GetScriptArgument はスクリプトの名前を返します。

(GetScriptFather): この関数は、親スクリプトの ID 番号を返 します。

(ReceivFromScript {int}): この関数は番号 int のスクリプト によって送られたメッセージを返します。

(RemainderOfDiv {int1 int2}): この関数は、商 (int1/int2) の余りを返します。

(GetTime): この関数は、秒単位での時刻を返します。

分岐やループ

3 種類の分岐やループがあります。命令 "If-Then-Else" は以下 の書式で使用します:

  If $ToDo=={Open xcalc} Then

Do {Exec xcalc &}

# 命令のリスト

Else
Begin

Do {Exec killall xcalc &}

# 命令のリスト

Do {Exec echo xcalc killed > /dev/console}
End

2 番目の "Else-Begin-End" の部分は必須ではありません。実行 部分に一つの命令しかなければ、Begin と End は省略 で き ま す。命令 "While-Do" は以下の書式で使用します:

  While $i<5 Do
  Begin

Set $i=(Add i 1)

# List of instructions

End

"==" で 2 つの文字列を比較でき、 "<", "<=", ">=", ">" で 2 つの数字を比較できます。ループ "For-Do-Begin-End" は以下の 書式で使用します:

  For $i=1 To 20 Do
  Begin

Do {Exec xcalc &}

# 命令のリスト

End

作者

Frederic Cordier (cordie97@cui.unige.ch or f-cord96@univ-lyon1.fr).

寄与者

Eddy J. Gurney (eddy@gizmo.aa.ans.net).