FVWM95-2.xx

名前
形式
説明
COPYRIGHTS ( 原文 )
著作権 ( 日本語訳 )
ウィンドウの構造
仮想デスクトップ
初期化
アイコン
モジュール
ICCCM 勧告への対応度
M4 による前処理
CPP による前処理
AUTO-RAISE
オプション
設定ファイル
組み込み関数
キーボードショートカット
設定例の提供
マルチスクリーンディスプレイ上での使用について
バグ
著者

名前

fvwm95 − X11 用の Win95 に似た F(?) 仮想ウィンドウマネー ジャ

形式

fvwm95 [ options ]

説明

fvwm95 は X11 用のウィンドウマネージャです。こ れ は、fvwm を元に作られたもので、 fvwmtwm を元に作られています。

普 通の fvwm と同様、fvwm95 は大きな仮想デスクトップと、別 々に、あるいは一緒に使用できる複数の重ならないデスクトップ の 両 方を提供します。仮想デスクトップは、使用しているスク リーンが実際に広くなったかのように見せてくれ、そしてそのデ スクトップ内のあちこちをスクロールすることが可能です。複数 の重ならないデスクトップは、実際に複数のスクリーンを作業す る場として持っているかのように見せてくれますが、個々のスク リーンはそれぞれ完全に独立しています。

fvwm95 はキーボードによる高速操作性も提供します。これに よ り、ウィンドウの移動やサイズの変更のような、たいていのウィ ンドウマネージャの機能を実行できますし、キーボードショート カットを使ってウィンドウマネージャのメニューの操作も行えま す。

たいていのウィンドウマネージャが設定コマンドと組み込みコマ ンドとの違いを明確にしているのに対し、 fvwm はその違いをあ いまいにしています。典型的には設定コマンドはフォント の 設 定、色の設定、メニューの内容やキー、マウスの機能割り当てな どを行います。一方、組み込みコマンドは典型的にはウィンドウ の上げ下げなどを行います。 fvwm はそのような違いを持たない ので、現実的な範囲で、どんなものでもいつであっても変化させ ることが可能になっています。

Fvwm と他の X11 ウィンドウマネージャのその他の特筆すべき違 いは、 SloppyFocus (だらしないフォーカス) とフォーカ ス を ウィ ン ド ウ 毎 に 設 定 す る ことを導入している点です。 SloppyFocus は、 マ ウ ス に 従 う フォー カ ス (focus-follows-mouse) ですが、マウスがウィンドウから出て ルートウィンドウ (背景のウィンドウ) に入ってもそのフォーカ ス が 消 えない性質があります。 SloppyFocus がデフォルトの フォーカススタイルとして使われている場合、通常タイプ入力し な い よ うなウィンドウ (xmag, xman, xgraph, xclock, xbiff 等) をマウスクリックに従うフォーカス (click-to-focus) にす る と い い でしょう。そうすれば、端末ウィンドウが不必要に フォーカスを失うことはなくなります。

COPYRIGHTS ( 原文 )

Since fvwm95 is derived from fvwm code it shares fvwm’s copyrights.

fvwm is copyright 1988 by Evans and Sutherland Computer Corporation, Salt Lake City, Utah, and 1989 by the Massachusetts Institute of Technology, Cambridge, Massachusetts, All rights reserved. It is also copyright 1993 and 1994 by Robert Nation.

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Evans & Sutherland and M.I.T. not be used in advertising in publicity pertaining to distribution of the software without specific, written prior permission.

ROBERT NATION, CHARLES HINES, EVANS & SUTHERLAND, AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

著作権 ( 日本語訳 )

fvwm95fvwm のコードからの派生物なので、fvwm95fvwm の著作権を共有します。

fvwm は、1988 年にエバンス & サザーランドコンピュータ株式 会社 (ユタ州ソルトレーク市)、 1989 年にマサチューセッツ 工 科大学 (マサチューセッツ州ケンブリッジ市) による著作物で、 全ての権利が保護されています。 1993 年と 1994 年に ロ バー ト・ ネ イ ション (Robert Nation) によっても作成されていま す。

このソフトウェア、およびその付属文書の使用、複製、改変、配 布の許可は、任意の目的に対して、そして課金をしないならば、 この文書により、以下の条件の元で保証されます: 上の著作権通 知が全ての複製に含まれること、その著作権通知とこの許可通知 の両方が付属文書に含まれること、そして、このソフトウェアの 配布に関して、特に文書での許可をあらかじめ取っているのでな ければ、エバンス & サザーランドと M.I.T の名前を公の広告に 使用しないこと。

ロ バート・ネイション、チャールズ・ハインズ、エバンス & サ ザーランド、そして M.I.T は、このソフトウェアに対して何 の 保証もしませんし、市場性や適切さに対する暗黙の保証もしませ ん。どんな特殊な、間接的な、または結果として引き起こされた 損害に対しても、または、このソフトウェアの使用や性能から引 き起こされる、あるいはそれに関係した使用不能や、データの損 失、利益の損失の結果としてのどんな損害に対しても、それらが 契約、過失、およびその他の不正行為によってであるかそうでな い か に 関わらず、どんな場合でもエバンス & サザーランドと M.I.T は責任を負いません。

ウィンドウの構造

fvwm95 は、ほとんどのウィンドウの周囲に装飾的な 3 次元的な 境 界をつけます。この境界は、上下左右の 4 方向の辺上のまっ すぐな棒 (bar) と 4 つの角にある小さな "L" 字型の部品か ら できています。さらに、タイトルバーと呼ばれる、ウィンドウ名 を表示するのに使われる棒を上辺に追加してつけることもできま す。さらに、最大 10 個までのタイトルバーボタンをその中に追 加することもできます。上辺や左右の辺、および底辺の棒はまと めてサイドバーと呼ばれます。

標準的な初期化ファイルを修正しなければ、タイトルバー、また はサイドバーでマウスボタン 1 を押すと、ウィンドウの移動 操 作を開始します。角の L 字部分でボタン 1 を押すとサイズ変更 操作を開始します。境界の任意の箇所でボタン 2 を 押 す と、 ウィンドウ操作の一覧メニューを作り出します。

タイトルバーボタンは最大 10 個まで作れます。それらの使用は 完全にユーザが定義可能です。デフォルトの設定ではタイ ト ル バー ボタンは、タイトルバーの両側に 1 つずつつきます。左端 のものは、ウィンドウ操作の一覧メニューを作りだすもので、右 端のものは、ウィンドウのアイコン化用のものです。使用するタ イトルバーボタンの数は、どれがマウス操作を割り当てられてい る タ イトルバーボタンであるかに依存します。以下の "Mouse" 設定パラメータの節を参照してください。

仮想デスクトップ

fvwm95 は、複数の仮想デスクトップを使いたい人に提 供 し ま す。スクリーンは、それより広くてもいい一つのデスクトップ上 へのビューポート (視野) になります。いくつかの異なるデスク トップにアクセスすることができます (個々のプロジェクト用に 一つのデスクトップ、あるいは表示アプリケーションが異なる場 合の個々のアプリケーション用に一つのデスクトップ、といった 利用を想定しています)。デスクトップ一つ一つは、物理的な ス クリーンサイズよりも大きくても構わないので、スクリーンより も大きいサイズのウィンドウや、関連するたくさんのウィンドウ のグループなどを簡単に見ることができます。

仮 想 デスクトップのサイズは、組み込みコマンド DeskTopSize を使っていつでも変更できます。すべてのデスクトップは同じサ イズになります。デスクトップの個数は指定する必要はありませ んが、全部でほぼ 40 憶個までに制限されています。デスクトッ プ の領域内のすべてのウィンドウは Pager で見ることができま すが、これはデスクトップをミニチュア表示します。この Pager は、モジュールと呼ばれる付属プログラムの一つで、ウィンドウ マネージャの操作に必要不可欠なも の で は あ り ま せ ん。 FvwmWinList と呼ばれる別なモジュールによって、ウィンドウの 一覧を、そのそれぞれの位置に従った順で、ポッ プ アッ プ メ ニューか独立したウィンドウとしてアクセス可能できる形で、作 成することができます。

"Sticky" (粘着的) ウィンドウは、「スクリーンのガラスに張り つく」ことで仮想デスクトップを越えるウィンドウです。それは 常にスクリーン上に居続けます。これは、時計や xbiff (郵便受 け) のようなものには便利な機能で、そのような小道具をは一つ 起動するだけで済みますし、それが常にあなたと共にいます。ア イコンも、望むならば、スクリーンに張りつくようにすることが できます。

ウィンドウの位置や大きさの情報 (geometry) は、現在のビュー ポートに相対的に指定します。例えば、

     xterm -geometry +0+0

これは、常にスクリーンの表示部分の左上の角に表示されます。 ウィンドウを仮想デスクトップに置くような geometry を指定す ることも可能ですが、スクリーンからは外れます。例えば、表示 スクリーンが 1000x1000 ピクセルの大きさであって、 デ ス ク トップサイズが 3x3 (i.e. 一つのデスクトップが縦 3 行、横 3 列のスクリーンからなる) であって、現在のビューポートがその デスクトップの左上角にあるとき、

     xterm -geometry +1000+1000

のようにすると、そのウィンドウはスクリーンの右下に外れます が、マウスをスクリーンの右下に持っていってスクリーンがスク ロールされるまで待てばそのウィンドウを見つけることができま す。

ウィンドウを、現在有効なデスクトップではない別のデスクトッ プ 上 に配置する方法は今のところはありませんが、もしかして 知っていませんか ?

geometry を以下のように指定した場合

     xterm -geometry -5-5

一般的には、そのウィンドウの右下の角が、表示スクリーンの右 下 の角から 5 ピクセルの位置に置かれます。ただし、全てのア プリケーションが負の位置指定のウィンドウ geometry をサポー トしているわけではありません。

xterm や xfontsel のように、標準的な Xt (X toolkit) コマン ドライン引数と X リソースを解釈するようなアプリケーショ ン に対してはユーザは、起動時のデスクをコマンドラインで指定で きます:

     xterm -xrm "*Desk:1"

これは、xterm を番号 1 のデスクで起動します。しかし、全 て のアプリケーションがこのオプションを認識するわけではありま せん。

これと同じことは、あなたの .Xdefaults ファイルに以下の行を 入れることでも可能です:

     XTerm*Desk: 1

初期化

初 期 化 の間、fvwm95 は設定ファイルを探します。それには、 キー、マウスボタンの割り当てや、他のいくつかのことが書かれ て い ま す。 そのファイルの書式に関しては後で述べます。ま ず、fvwm95 は .fvwm95rc という名前 (または、コンパイル時の 設 定 に よっ て は .fvwmrc という名前 - デフォルトでは .fvwm95rc) のファイルを、ユーザのホームディレクトリ上で 探 します。それに失敗した場合、システム共通の設定ファイルであ る /usr/lib/X11/fvwm/system.fvwm95rc (うちの研 究 室 で は /usr/local/x11/lib/fvwm95/system.fvwm95rc) を検索します。 そのファイルも見つからなかった場合、 fvwm95 は基本的に使い ものにはならないでしょう。

fvwm95 は、その子プロセスに引き継がれる環境変数を 2 つ設定 します。一つは $DISPLAY で、これは fvwm95 が動作して い る ディスプレイを意味します。 $DISPLAY は unix:0.0 や :0.0 な どで、これは rsh

を通して他のマシンを使っている場合は あ ま りうまくは効きません。よって、$HOSTDISPLAY も設定され、 これはネットワーク向きのディスプレイの記述になっています。 $HOSTDISPLAY は TCP/IP 転送プロトコルを常に使います (ロー カルな接続であっても) ので、ローカルな接続には $DISPLAY を 使うべきで、これは Unix ドメインソケットを使用し、こちらの 方が高速です。

fvwm95 には 2 つの初期化用の特 別 な 関 数、 InitFunction と

RestartFunction を持っていて、これらはそれぞれ初期 化と再起動の時に実行されます。これらはユーザの rc ファイル (初期設定ファイル) で AddToFunc の機能 (後述) を使って、モ ジュールや xterm、その他 fvwm95 の起動時に立ち上げさせたい も の を何でも起動させるようにカスタマイズするようにできま す。

fvwm95 は終了用の特別な関数名「ExitFunction」も持ってい ま す。これは (それが定義されていれば)、fvwm95 の終了時、ある いは本当に fvwm95 を終了させる前に再起動させたとき等の場合 に実行されます。それを定義すれば明示的にモジュールを殺した りするのに使えます。

アイコン

基本的な fvwm95 の設定は、 twm 同様白黒のビットマップア イ コ ンを使うようになっています。 XPM 拡張が有効な状態でコン パイルされている場合は、 ctwm, MS-Windows, Macintosh な ど と同様にカラーのアイコンを使うことができます。そのオプショ ンを使うためには XPM パッケージが必要ですが、それに関し て は Imake の設定ファイル Fvwm.tmpl 内に書かれています。

SHAPE と XPM オプションの両方がついてコンパイルされている 場合、形のあるカラーアイコンを使うこともできますが、それは とても綺麗です。

モジュール

モ ジュールは fvwm95 とは分離した形のプログラムで、 fvwm95 とは分離した Unix プロセスとして動作しますが、 fvwm95 に実 行 さ せるコマンドを fvwm95 に送信します。ユーザは、fvwm95 それ自身の完全さに影響を与えない、あるいは fvwm95 を肥大化 させない、不気味な、または奇妙な操作をするような自分のオリ ジナルのモジュールを書くことも可能です。

モジュールのプロセスは、fvwm95 とモジュールの双方が通信 で き る よ うな 2 つのパイプをセットできるように、 fvwm95 に よって生成される必要があります。モジュールのためのパ イ プ は、それが起動したときに既にオープンされていて、パイプ用の ファイルデスクリプタはコマンドライン引数として与えられてい ます。

モ ジュー ルプロセスは fvwm95 の初期化の際にモジュールオプ ションによって生成されるか、または、組み 込 み コ マ ン ド Module を使うことによって X が動作している間の任意の時に生 成されます。モジュールは、X の起動中存在し続けることもでき ま す し、一つの仕事を行ってその後終了することもできます。 fvwm95 が終了するよう命令されたときにモジュールがまだ有 効 な 場 合、 fvwm95 は通信用のパイプを閉じてモジュールからの SIGCHLD シグナルが来るのを待ちますが、それは、パイプが閉じ たことをモジュールが検出し、そして終了した、ということを示 しています。モジュールがパイプが閉じたことの検出に失敗した 場合、 fvwm95 はほぼ 30 秒後に取りあえず終了します。同時に 実行できるモジュールの数は、同時に開けるファイルの最大数と い う OS の制限によって限定されますが、通常は 60 から 256 の間です。

モジュールは単にテキストコマンドを fvwm95 の組み込みコマン ドエンジンに送信するだけで、このテキストコマンドとは、設定 ファイル .fvwm95rc の丁度マウス割り当ての場合のような書 式 で す。サンプルモジュール FvwmButtons の中にあるように、あ る補足の情報も送信されます。モジュール FvwmButtons に関 し ては、そのマニュアルページに書かれています。

ICCCM 勧告への対応度

fvwm95 は ICCCM 1.1 への対応を試みています。さらに、ICCCM はアプリケーションが「任意の」キーストロークを受け取ること が 可能であるべきだと述べていますが、しかしこれは fvwm95、 および他のほとんどのウィンドウマネージャで利用されて い る ショートカットキーの手法と両立しません。

ICCCM は、以下のプロパティを所有するウィンドウ:

     WM_HINTS(WM_HINTS):
                     Client accepts input or input focus: False

は、ウィンドウマネージャがキーボードフォーカスを与えるべき ではない、と言っていますが、そういったウィンドウは自分自身 で入力フォーカスを取得します。多くのアプリケーションがこの プロパティを設定していて、その上ウィンドウマネージャがキー ボードフォーカスを与えてくれる、と思っているのです。だから fvwm95 は "Lenience" (Lenience = 寛大) というウィンドウ ス タ イルを用意し、 fvwm95 がこの ICCCM の規則を大目に見るこ とができるようにしています。

M4 による前処理

M4 による前処理は fvwm95 ではモジュールとして提供されて い ま す。 詳 細 は man FvwmM4 を見てください。簡単に言う と、fvwm95 にあなたのファイルを m4 で処理させたい場合、 に 置き変えて、 fvwm95 を次のように実行します:

     fvwm95 -cmd "FvwmM4 .fvwm95rc"

CPP による前処理

cpp は C 言語のプリプロセッサです。 fvwm95 は m4 による前 処理と全く同様の cpp による前処理も提供しています。それ に 関しては、上の M4 の項目を、"m4" の部分を "cpp" と置き変え て読んでみてください。

AUTO-RAISE

ウィンドウはそれがフォーカスを得たとき、あるいはフォーカス を得て数ミリ秒後に自動的に一番上に来るようにすることができ ます。それには auto-raise モジュールである FvwmAuto を使用 します。

オプション

fvwm95 が認識するコマンドラインオプションは以下の通りです:

-f config_file

fvwm95 に、初期化ファイルとして、".fvwm95rc" の 代 わりに config_file を読み込まさせます。これは -cmd "Read config_file" と同等です。

-cmd config_command

fvwm95 に、初期化コマンドとして "Read .fvwm95rc" を さ せる代わりに config_command を使用します (10 個までの -f-cmd パラメータを与えることが可能、 それらは指定した順に実行されること、に注意してくだ さい)。

-debug

同期モードでの X とのやりとりを出 力 し ま す。 動作は劇的に遅くなりますが、出力される fvwm95 の内部エラーメッセージが正しいものであることは保証 されます。

-d displayname

環 境 変 数 $DISPLAY に よ る 名 前 の 代わりに "displayname" の名前のディスプレイを制御します。

-s

マルチスクリーンディスプレイ上で、 fvwm95 を環 境 変数 $DISPLAY、または -d オプションで与えられる 名前のスクリーンのみで動作させます。通常は、マルチ ス ク リーンディスプレイでは、 fvwm95 は全てのスク リーン上で起動しようとします。

-version

fvwm95 のバージョンを標準エラー出力に表示します。

設定ファイル

設定ファイルはキー割り当て、マウスボタン割り当て、色、仮想 ディスプレイサイズ、そしてそれらに関連する項目等を記述する のに使われます。初期設定ファ イ ル の 典 型 的 な 名 前 は ".fvwm95rc" です。組み込み関数 "Read" を使えば、容易に別の 設定ファイルをあなたのしたいように読み込ませることが可能で す。

´#’ で 始 まる行は fvwm95 は無視します。’*’ で始まる行は (fvwm95 自身の設定コマンドではなく) モジュールの設定コマン ドが含まれる行とみなされます。

fvwm95 の設定コマンドと組み込みコマンドとの間には特に違い はなく、組み込みコマンドの節で説明されているものはい ず れ も、それを一つの行に書くことでそれが設定ファイルから読み込 まれるときに fvwm95 に実行させることも可能ですし、またはメ ニュー内やマウスボタンやキーボードのキーに割り当てた実行コ マンドとすることも可能です。どの関数が初期化用の意味 を 持 ち、どの関数が実行時に意味があるのか、ということを決めるの はユーザへの課題として残されています。

組み込み関数

fvwm95 は組み込み関数群をサポートしていて、それはキー ボー ドやマウスボタンに割り当てることができます。 fvwm95 は一つ のコマンドにまず組み込み関数を見つけようとして、そしてそれ に失敗した場合はその指定されたコマンドが "Function (コマンドの残り)" という形なのか "Module (コマンドの残り)" のどちらであるかを調べます。こ れにより、設定ファイルに関してかなり透明な仕組みで、複雑な 関数やモジュールを呼び出すことが可能になります。

例: ファ イル .fvwm95rc が "HelpMe" という行を持つとしま す。 fvwm95 はまず "HelpMe" という名の組み込みコマンドがあ る かどうかを調べますが、それはありません。次に、fvwm95 は ユーザが定義した "HelpMe" という名前の複雑な関数があるかど うかを探します。もし、そのようなユーザ定義関数がなければ、 fvwm95 は "HelpMe" という名のモジュールを実行しようとし ま す。

引用符は、fvwm95 に 2 つ以上の単語を一つの引数と思わせると きのみに必要ですが、不必要な引用符の使用も許されています。 文 字 列内で引用符文字を使用したい場合は、バックスラッシュ (\) を頭につけてエスケープする必 要 が あ り ま す。 例 え ば、Window-Ops と いう名前のポップアップメニューに対して は、引用符を使う必要はなく、Popup Window-Ops とで き ま す が、このダッシュ (-) をスペース ( ) で置き変えた場合は引用 符が必要で、 Popup "Window Ops" とする必要があります。

AddToMenu

これはメニューの定義を開始、あるいはメニュー定義へ の追加を行います。典型的なメニュー定義は例えば以下 のようになります:

     AddToMenu Utilities "Utilities"     Title
     +                   "Xterm"         Exec  xterm -e tcsh
     +                   "Rxvt"          Exec  rxvt
     +                   "Remote Logins" Popup Remote-Logins
     +                   "Top"           Exec  rxvt -T Top -n Top -e top
     +                   "Calculator"    Exec  xcalc
     +                   "Xman"          Exec  xman
     +                   "Xmag"          Exec  xmag
     +                   "emacs"         Exec  xemacs
     +                   "Mail"          MailFunction xmh "-font fixed"
     +                   ""              Nop
     +                   "Modules"       Popup Module-Popup
     +                   ""              Nop
     +                   "Exit Fvwm95"   Popup Quit-Verify

このメニューは、

     Mouse 1 R       A       Menu Utilities Nop

     Mouse 1 R       A       Popup Utilities

のようにして呼びだすことができます。メニューの終り を表わす記号はありません。メニュー同士が .fvwm95rc ファイル内の隣接する領域で定義される必要もありませ ん。 上 の例の引用符で囲まれた部分はメニューラベル で、それはユーザがメニューをポップアップした際にそ こに表示されるものです。残りの部分は組み込みコマン ドで、それはユーザがそのメニュー項目を選択したとき に 実行されるべきものです。空のメニューラベル ("") と Nop 関数は、メニューに仕切り線を入れるのに使 わ れます。

メ ニュー 名が、’@’ で始まる部分文字列を含む場合、 ´@’ で囲まれた文字列は xpm アイコンかビットマッ プ ファ イ ルの名前であるとみなされ、それは、適当にメ ニューの内容部分を移動しながらメニューの左下の角に 描画されます。例えば、

     AddToMenu "[email protected]@"

は、左下角に絵の入ったメニューを生成します。

メ ニュー 名 が、’^’ で 始まる部分文字列を含む場 合、’^’ で囲まれた文字列は X11 の色名であるとみ な され、その横の絵を含む列がその色で色付けされます。 例えば、

     AddToMenu "[email protected]@^blue^"

は、左下角に絵が入ったメニューを生成し、その絵を含 む列が青に塗られます。

どちらの場合でも、結果としてメニューの名前は、指定 したものからそれらの部分文字列を取り除いたものにな ります。

メ ニュー ラ ベルが ’*’ で始まる部分文字列を含む場 合、 ´*’ で囲まれた文字列は xpm アイコンか ビッ ト マップファイルの名前であるとみなされ、メニューに挿 入されます。例えば、

+

"Calculator*xcalc.xpm*"

Exec xcalc

は、"Calculator" というラベルのついたメニュー項 目 を作り、その上に計算機の絵がつきます。以下の例:

+

"*xcalc.xpm*" Exec xcalc

は、"Calculator" というラベルを省略しますが、絵は 残ります。

メニューラベルが ’%’ で始まる部分文字列を 含 む 場 合、 ´%’ で囲まれた文字列は xpm アイコンかビット マップファイルの名前であるとみなされ、メニューラベ ルの左に挿入されます。例えば、

+

"Calculator%xcalc.xpm%"

Exec xcalc

は、"Calculator" というラベルのついたメニュー項目 を作り、その左に計算機の絵がつきます。以下の例:

+

"%xcalc.xpm%" Exec xcalc

は、"Calculator" というラベルを省略しますが、絵 は 残ります。これに使用される画像は小さいものであるべ きです (できれば 16x16)。

AddToFunc

これは関数の定義を開始、あるいは追加します。以下は その一例です:

     AddToFunc Move-or-Raise         "I" Raise
     +                               "M" Move
     +                               "D" Lower

こ の関数名は Move-or-Raise で、これはメニューやマ ウス、キーの割り当て (binding) で呼び出すことが で きます:

     Mouse 1 TS      A       Move-or-Raise

関数の引用符で囲まれた部分は、どんな種類の動作がそ れに従うコマンドを起動させるかを表しています。 "I" は Immediate を意味し、これは関数が呼び出され るとすぐに実行されます。 "M" は Motion を意味し、すなわちユーザがマウスを 動かし始めたとき、となります。 "C" は Click、すなわちユーザ が 短 い 時 間 の 間 (ClickTime ミリ秒) にマウスボタンを押して離したと き、となります。 "D" はダブルクリックを意味します。どのウィンド ウ に従うべきか、という優先度に関する情報とともにその 関数が呼ばれた場合、動作 "I" は、そのボタンが押 さ れたところで実行されるべき動作を引き起こします。

$w と $0 から $9 までの記号は特別な意味を持ち、複 雑な関数やマクロ、またはそれらを呼び出したいどんな 場 所でも有効です。マクロ内では、$w はそのマクロが 呼び出されたウィンドウのウィンドウ ID ( 例 え ば 0x10023c のような 16 進表記) に展開されます。$0 か ら $9

は、マクロの引数になりますので、よって

     Key F10
R
A
Function MailFunction xmh "-font fixed"

のように呼び出し、そして MailFunction が

     AddToFunc MailFunction     "I" Next [$0] Iconify -1
     +                          "I" Next [$0] focus
     +                          "I" None [$0] Exec $0 $1

のようであったとすると、関数の最後の行は以下のよう になります。

     +                          "I" None [xmh] Exec xmh -font fixed

その展開は関数が実行されるときに行われますので、一 つの関数をありとあらゆる種類の異なる引数に対して使 う ことができます。したければ、同じ .fvwm95rc ファ イル内で、

Key F11

R

A

Function MailFunction zmail "-bg pink"

とすることもできるわけです。$w を使った例は例えば:

     AddToFunc PrintFunction         "I" Raise
     +                               "I" Exec xdpr -id $w

$$ は $ と展開されることに注意してください。

Beep

期待される通り、これは端末のビープ音を生成し ます。

ButtonStyle button# pixmap

これはタイトルバーボタンのところに表示されるピクス マッ プ (xpm 画像) ファイルを定義します。 button# はタイトルバーボタン番号で 0 から 9 までの数 字 で す。ピクスマップファイルは一つだけ指定できます。

     ButtonStyle 2 mini-close.xpm

ピクスマップファイル指定は絶対パスでも相対パスでも 構いません (PixmapPath 参照)。ピクスマップファイル が見つからなかった場合、そのボタンはピクスマップ画 像を含まない、単なる長方形になってしまいます。

ClickTime delay

これには、組み込み関数がマウスクリック動作と認識す る、ボタンを押してから離すまでの最大の時間間隔 (ミ リ秒単位) を指定します。デフォルトの間隔は 150 ミ リ秒です。

Close

ウィンドウがウィンドウ削除プロトコルを受け つける場合はそのメッセージをウィンドウに送り、行儀 よく消えてくれるか尋ねます。ウィンドウ削除プロトコ ルを理解しないウィンドウの場合は、そのウィンドウを 破壊します。

ColormapFocus [FollowsMouse | FollowsFocus]

デ フォルトでは、fvwm95 はカーソルが入っているウィ ンドウにカラーマップを割り当てます。 ColormapFocus FollowsFocus を 使うと、カラーマップは、現在キー ボードフォーカスのあるウィンドウのものになります。

CursorMove horizontal vertical

こ れは、マウスポインタを X 方向に horizontal ペー ジ、 Y 方向に vertical ページ移動します。これら の 指 定は負の値でも構いません。 horizontal, vertical の値はいずれもページサイズに対するパーセントを意味 し、 よっ て "CursorMove 100 100" は右下に丸々 1 ページ分動かすことになります。 "CursorMove 50 25" は右に 1 ページの半分だけ、 下 に 1 ペー ジの 1/4 だけ動かすことを意味します。 CursorMove 関数は popup menu では使うべきではあ り ません。

DefaultColors winfore winback titlefore titleback

こ れ は、デフォルトの色一式を設定します。 winback はメニューウィンドウを含む全てのウィンドウの背景 ( 境 界) 色 を、 winfore はメニューの文字の色を、 titleback は選択されていないタイトルバーの背 景 色 を、 titlefore は選択されていないタイトル文字の色 を、それぞれ意味します。

Delete

これは、ウィンドウに自分で消えてくれないか と 尋 ねるメッセージを送りますので、通常アプリケー ションは終了させられます。

Desk arg1 arg2

これは他のデスクトップ (作業場、部屋とも呼ばれ る) へ切り変えます。

arg1 が 0 でなければ切り代わる先のデスクトップ番号 は、現在のデスクトップ番号 + arg1 です。デスクトッ プ番号は負でも構いません。

arg1 が 0 ならば、切り代わる先のデスクトップ番号は arg2 です。

有効 (active) なデスクトップの個数は動的に決定しま す。 有 効なデスクトップとは、ウィンドウを含むもの か、現在表示されているものを言います。デスクトップ 番 号は -2147483648 から 2147483647 までの間である 必要があります (それで十分でしょう ?)。

DeskTopSize HorizontalxVertical

これは、物理的なスクリーンサイズを単位とした、仮想 デスクトップのサイズを定義します。

Destroy

これはアプリケーションウィンドウを破壊しますが、通 常それはアプリケーション (のプロセス) を壊してつぶ します。

DestroyFunc

これは関数を削除し、その後のその関数への参照が無効 になるようにします。これは、fvwm95 を動作させな が ら 関 数の内容を変更する場合に使えます。その関数は AddToFunc を使って再構成できます。

DestroyFunc "PrintFunction"

DestroyMenu

これはメニューを削除し、その後のそのメニューへの参 照 が無効になるようにします。これは、fvwm95 を動作 させながらメニューの内容を変更する場合に使えます。 そのメニューは AddToMenu を使って再構成できます。

DestroyMenu "Utilities"

DestroyModuleConfig

これはモジュール設定行を削除し、新しい設定行を代わ りに入れられるようにします。これは、fvwm95 を動 作 さ せ な が ら、fvwm95 を再起動させることなしにモ ジュールの動作の方法を変更するのに使えます。さらに その名前にはワイルドカードを使うこともできます。

            DestroyModuleConfig FvwmFormFore
            DestroyModuleConfig FvwmButtons*

EdgeResistance scrolling moving

これは、マウスがスクリーンの端を越えて動くときにデ スクトップビューポートを変更すること、及びスクリー ン の 端 を 越えてウィンドウを動かすことの困難さを fvwm95 に伝えます。

最初のパラメータは fvwm95 がビューポートを動かす前 にマウスポインタが何ミリ秒、スクリーンの端にいなけ ればいけないかを意味します。 こ れ は、"EdgeScroll 100 100" を使うが、彼らが望まないときに不意にペー ジを自分でジャンプさせてしまうような人を想定してい ます。

2 つ目のパラメータは、ウィンドウの端を、それが部分 的にスクリーンから離れて実際に移動する前に、 ス ク リーンの端を越えて何ピクセル動かさなければいけない か、を意味します。

"EdgeScroll 0 0" でも、現在のスクリーンの端をま た いでウィンドウの移動や大きさの変更 (resize) がまだ 可能であることに注意してください。最初のパラメータ を EdgeResistance 10000 にすることで、このような移 動等はできなくなります。 EdgeResistance を 10000 未 満 (しかし 0 よりは大) にすると、ページを越える ことは難しくはなりますが不可能ではありません。

EdgeScroll horizontal vertical

これには、カーソルがページの端に当たったときにペー ジ を 何パーセントスクロールさせるかを指定します。 ページの端に当たっても、何のページの切り変えもスク ロー ルも望まない場合は、あなたの .fvwm95rc ファイ ルに "EdgeScroll 0 0" と書いてください。ページ全体 を 丸々スクロールさせたいなら "EdgeScroll 100 100" としてください。 horizontal と vertical は正の数で ある必要があります。

horizontal と vertical のパーセントが 1000 倍され た場合、デスクトップの端でのスクロールは反対の端に 戻 り ま す (1 巻 に つ な がっ た形式)。例えば "EdgeScroll 100000 100000" を使用する と、 fvwm95 はページを丸々スクロールし、デスクトップの端では反 対の端につながった形式にします。

Exec command

これは command を実行します。 Exec は、command の 先 頭に ’exec’ とつけたり、最後に ’&’ とつけたりす る必要はありません。

以下の例はルートウィンドウ上で、修飾キーなしのファ ンクションキー F1 を exec 関数に割り当てています。 プログラム rxvt は、オプション一揃いをともなって起 動されます。

     Key F1 R N Exec rxvt -fg yellow -bg blue -e /bin/tcsh

ExecUseShell [shell]

これは、Exec コマンドに、デフォルトの Bourne shell (/bin/sh) の代わりに指定した shell か、 ま た は shell を指定しなかった場合は $SHELL 環境変数で定義 されているものを使わせます。

     ExecUseShell
     ExecUseShell /usr/local/bin/tcsh

Focus

これは、必要なときに選択されたウィンドウ が 見 え るように、ビューポートやウィンドウを移動しま す。そしてキーボードフォーカスを選択されたウィンド ウに設定し、見えるのに必要ならウィンドウを前面に出 します。しかしマウスポインタは選択されたウィンドウ に は ジャ ン プさせません (WarpToWindow 関数参照) し、アイコン化されているウィンドウを元に戻すことも しません。

Function FunctionName

これは、あらかじめ定義された関数をキー、またはマウ スボタンに割り当てるのに使われます。

以下の例は、マウスボタン 1 に "Move-or-Raise" と呼 ばれる関数を割り当てます。この関数の定義は、このマ ニュアルの上の方の例にあります。この割り当ての行わ れ た後、fvwm95 は、ウィンドウタイトルバーのどこで ボタン 1 が押されても move-or-rase 関数を実行す る ことになります。

     Mouse 1 T A Function Move-or-Raise

"FunctionName" が fvwm95 の組み込み関数の名前と一 致しない場合、キーワード "Function" は省略で き ま す。

GotoPage x y

こ れは、デスクトップビューポートをページ (x,y) に 移動します。一番左上のページが (0,0) で、 右 上 が (N,0) です。ここで、N は DeskTopSize コマンドで指 定した現在の水平ページ数 (horizontal) より 1 だ け 小 さい数です。左下のページは (0,M) で右下は (N,M) です。ここで、M は DeskTopSize コマンドで 指 定 し た、デスクトップの垂直方向のサイズ (vertical) より 1 だけ小さい数です。この GotoPage 関数はポップアッ プメニューでは使うべきではありません。

HilightColors textcolor backgroundcolor

これは、現在キーボードフォーカスを持つウィンドウ ( 選択されたウィンドウ) のタイトルバーの文字色と背景 色を設定します。

IconFont fontname

こ れ は fvwm95 に、 ア イ コンのラベル用として fontname のフォントを使用させます。これを省略し た 場合、(MenuFont 設定変数で指定される) メニューフォ ントが代わりに使用されます。

Iconify [ value ]

これは、アイコン化されていないウィンドウをアイコン 化し、アイコン化されたウィンドウを元のサイズに戻し ます。省略できる引数の value が正の場合は、アイ コ ン化のみが行われます。オプション引数が負の場合はア イコンから元のサイズへの復帰のみが行われます。

IconPath path

これには、X11 ビットマップ形式 (白黒) のアイコン画 像が置かれているディレクトリのフルパス名を、’:’ 区 切りで指定します。それぞれのパスは ’/’ で始まっ て いなければなりません。環境変数をここで使用すること もできます ($HOME や ${HOME} 等)。

注意: rc ファイル (初期設定ファイル) の 解 釈 に FvwmM4 を使用している場合、 m4 は "include" という 語を消そうと し ま す が、 そ れ は IconPath や PixmapPath コマンドの中によく現れます。この問題を 解 決 す る に は、IconPath コ マ ン ド の 前 に undefine(‘include’) を追加するか、またはより良い方 法は、オプション ’-m4-prefix’ を使って強制的に全て の m4 命令が "m4_" と い う 接 頭 辞を持つことにすることです (FvwmM4 オンラインマニュアル参照)。

Key keyname Context Modifiers Function

これは、キーボードのキーを、指定された fvwm95 の組 み 込み関数に割り当てますが、 Function が ’-’ の場 合はその割り当てを削除します。定義は、マウスの割り 当てとほぼ同じで、そのマウス番号がキーに変わるだけ です。 keyname は、/usr/include/X11/keysymdef.h ( 注: Solaris で は /usr/openwin/include/X11/keysymdef.h) の中に書かれ て いる項目のうちの一つで、その先頭の XK_ を取り除 いたものです。引数 ContextModifiers はマウスの 割り当て Mouse と同様です。

以 下 の 例 は、 マ ウスポインタがどこにあっても、 Alt-Ctrl-Shift-F11 が押された場合に、組み込み ウィ ンドウリストをポップアップメニューに割り当てます:

     Key F11  A  SCM  WindowList

あるキーをあるタイトルバーボタンに割り当てたからと いって、そのボタンへのマウス割り当ても存在する場合 でなければ、そのボタンを表示させることはしません。

KillModule name

これは、name という名前で呼びだされたモジュール を 終了させます。 name にはワイルドカードを使うことも できます。

Lower

これでウィンドウを下 (奥) に降ろせます。

Maximize [ horizontal vertical ]

オプション引数がない場合、Maximize はウィンドウ を 通常のサイズとフルスクリーンサイズとに交互に切り変 えます。

オプション引数の horizontalvertical を指定した 場合、これらはフルスクリーンサイズの何パーセントで あるかを意味しますが、ウィンドウの新しいサイズを制 御 できます。 horizontal が 0 より大きい場合、ウィ ンドウの水平方向のサイズは、 horizontal*(スク リー ン幅)/100 に設定されます。垂直方向のサイズ変更も同 様です。例えば以下のようにすると、ウィンドウの垂直 サイズをフルスクリーンサイズに変更するタイトルバー ボタンを追加します:

     Mouse 0 4 A Maximize 0 100

以下のようにすればウィンドウの幅がいっぱいの幅に広 がります:

     Mouse 0 4 A Maximize 100 0

以下のものは、縦横の両方向がスクリーンサイズの半分 になったウィンドウを作成します:

     Mouse 0 4 A Maximize 50 50

100 より大きい値は用心して使ってください。

文字 "p" を各座標 (horizontal, vertical) につけ る と、大きさの単位はピクセル単位になります。

Menu menu-name double-click-action

これは、あらかじめ定義されたメニューを "sticky" な (くっついた) 方式でポップアップさせます。 す な わ ち、ユーザがメニューをドラッグではなくクリックで呼 び出した場合、メニューは消えずに出続けます。コマン ド double-click-action は、メニューを作り出すとき にユーザがダブルクリックした場合に呼び出されるもの です。

MenuFont fontname

こ れは、fvwm95 のメニュー項目に、 fontname のフォ ントを使わせます。これを省略した場合、 代 わ り に fixed フォントが使用されます。

Module ModuleName

これには、初期化の際に実行されるべきモジュールを指 定します。現在利用できるモジュール (fvwm95 に含 ま れるもの) は、 FvwmAudio (ウィンドウマネージャの操 作とともに音を生成), FvwmAuto (自動的に前面に持 ち 上 げる), FvwmBacker (デスクトップを変えたときに背 景を変える), FvwmBanner (ちょっとした XPM 画像を表 示), FvwmButtons (カスタマイズ可能なツールバーを生 成), FvwmCpp (.fvwm95rc を cpp で前処理), FvwmForm ( 対話型ツールの生成), FvwmIconBox (mwm IconBox の ようなもの), FvwmIdent (ウィンドウの情報を 取 得), FvwmM4 (.fvwm95rc を m4 で前処理), FvwmPager (デス クトップの小型表示), FvwmSave (デスクトップの状 態 を .xinitrc の形式で保存), FvwmSaveDesk (デスク トップの状態を fvwm95 コマンド の 形 式 で 保 存), FvwmScroll ( 任意のウィンドウにスクロールバーを付 加), FvwmTalk (fvwm コマンドを 対 話 的 に 実 行), FvwmTaskBar (Win95 の よ う な タ ス ク バー), FvwmWinList (ウィンドウの一覧) です。これ ら の モ ジュールにはそれ自身のオンラインマニュアルがありま す。また、fvwm95 には含まれない他のモジュールも 存 在します。

モジュールは短命の一時的なプログラムであっても構い ませんし、 FvwmButton のように X との対話中ずっ と い続けることもできます。モジュールは、ウィンドウマ ネージャが再起動するか終了する前に、可能ならばそれ によって終了させられます。モジュールを紹介している 節を参照してください。 ModuleName が全ての組み込み 関 数 名、 お よび関数名と違っていれば、キーワード "module" は省略することができます。

ModulePath path

これには、fvwm95 がモジュールを読み込むときにそ れ を 探すパスのリストを ´:’ 区切りで指定します。個々 のディレクトリは ’/’ で終わる必要はありません。 環 境 変 数 こ こ で 使用することもできます ($HOME や ${HOME} 等)。

Mouse Button Context Modifiers Function

これは、マウス割り当てを定義しますが、 Function が ’-’ の 場 合 は 逆にマウス割り当てを削除します。 Button はボタン番号です。Button が 0 の場合は、 任 意のボタンで指定された関数が実行されます。 Context (コンテキスト) は、どこに割り当てが適用されるか を 記述します。有効なコンテキストは R (ルートウィンド ウ)、W (アプリケーションウィンドウ)、 T (ウィン ド ウタイトルバー)、S (上下左右のウィンドウの境界にあ るサイドバー)、 F (ウィンドウの角にある L 字 型 の ウィンドウフレーム)、 I (アイコンウィンドウ)、0 か ら 9 までの数字 (タイトルバーボタン)、またはこれら の 文字の任意の組み合わせです。 A は、タイトルバー を除く任意のコンテキストを意味します。例え ば、FST と い うコンテキストは、タイトルバーボタン以外の、 ウィンドウの境界全てに適用されることになります。

Modifiers (修飾キー) は、N (修飾キーなし)、C (Ctrl キー)、 S (Shift キー)、M (Meta キー)、A (任意の修 飾キー) の任意の組み合わせです。例えば、SM とい う Modifier は Meta キーと Shift キーの両方が押された 場合に適用されます。 X11 で定義される修飾キー mod1 から mod5 も、数字の 1 から 5 で表現されます。

Function には、fvwm95 の組み込み関数の一つを与えま す。

タイトルバーボタンは、奇数番号は左に、偶数番号は右 に番号づけされています。小さい番号のボタンがウィン ドウの外側へ、大きい番号のボタンがウィンドウの真ん 中 に来るように表示されます (0 は 10 の省略形)。要 するに、

     1 3 5 7 9    0 8 6 4 2

のようになります。動作が割り当てられた最も大きい奇 数番号のボタンは、タイトルバーの左側に表示されるボ タンの数を決定し、最も大きい偶数番号のボタンは右側 に表示されるボタンの数を決定します。動作はマウスボ タンにも、キーボードのキーにも割り当て可能です。

Move [ x y ]

これは、ユーザがウィンドウを動かせるようにします。 ウィンドウ内部、またはその境界のどこかから呼び出さ れた場合、そのウィンドウが移動されます。ルートウィ ンドウで呼び出された場合、ユーザはその後、移動する ウィンドウを選択することになります。

オプション引数の x, y を指定した場合、ウィンドウは そ の左上の角がその場所 (x,y) になるように移動され ます。 x, y の単位はスクリーンの百分率ですが、文字 "p" が各座標値に追加されるとそれはピクセル単位での 指定となります。

例:

     Mouse 1 T A Move
     Mouse 2 T A Move 10 10
     Mouse 3 T A Move 10p 10p

最初の例では、対話的な移動が指示されていま す。 2 つ目の例は、タイトルバーが選択されたウィンドウを、 その左上の角がスクリーンの左端からスクリーン 幅 の 10% だけ右、スクリーンの上からスクリーンの高さの 10% だけ下の位置に移動します。最後の例は、ウィンド ウを (10,10) ピクセルの座標の位置に移動します。

Nop

これは何もしません。これは、メニューに空行や 分離線を入れるのに使われます。メニュー項目と し て Nop " " を指定すると空行が挿入され、 Nop "" とする と分離線が挿入されます。これは、メニューに対するダ ブルクリック動作用にも使うことができます。

Next [conditions] command

こ れ は、例えば Focus のような command を、全ての conditions (条件) を満たす次のウィンドウに実行しま す。 条 件 は、"iconic", "!iconic", "CurrentDesk", "Visible", "!Visible", "CurrentScreen" などを含みます。さらに、条件 に、 それにマッチした場合に実行させるようなウィンドウ名 を指定することもできます。そのウィンドウ名にはワイ ル ド カード *, ? を使うことができます。ウィンドウ 名、クラス、リソースは、それにマッチするものを検索 しようとするときに参照されます。

None [conditions] command

こ れは、すべての conditions (条件) を満たすウィン ドウが存在しない場合に command を実行します。条 件 は、"iconic", "!iconic", "CurrentDesk", "Visible", "!Visible", "CurrentScreen" を含みます。さらに、条件に、そ れ にマッチさせるためのウィンドウ名を指定することもで きます。そのウィンドウ名にはワイルドカード *, ? を 使うことができます。ウィンドウ名、クラス、リソース は、それにマッチするものを検索しようとするときに参 照されます。

OpaqueMoveSize percentage

こ れは、fvwm95 に、不透過型ウィンドウ変化を使うべ き最大ウィンドウサイズを知らせます。 percentage は 全スクリーン領域に対する百分率を意味します。 "OpaqueMove 0" の場合、全てのウィンドウが旧式のゴ ムひも型の外枠 (透過型ウィンドウ変化) を使って移動 され、 "OpaqueMove 100" では、全てのウィンドウが、ちゃん と中身の詰まったウィンドウとして移動されま す。 デ フォルトは "OpaqueMove 5" で、これにより小さなウィ ンドウは不透過的に、大きなウィンドウはゴムひもで移 動することになります。

PipeRead cmd

これは、fvwm95 に cmd という名前のプログラムから出 力されるコマンドを読み込まさせます。これは、 例 え ば、あるディレクトリの内容に応じて動的にメニュー項 目を作り上げる、といった場合に有用です。

PixmapPath path

これには、ピクスマップ形式 (カラー) のアイコン画像 が 置かれているディレクトリのフルパス名を、 ´:’ 区 切りで指定します。それぞれのパスは ’/’ で始まっ て いなければなりません。環境変数をここで使用すること もできます ($HOME や ${HOME} 等)。

Popup PopupName

この組み込み関数は、2 つの目的を持っています: 一つ は、メニューをキーやマウスボタンに割り当てること、 もう一つは、メニューに子メニューを割り当てることで す。それぞれの書式は、少し違いがあります。

あらかじめ定義されたポップアップメニューを、キーま たはマウスボタンに割り当てる方法:

次の例は、"Window Ops" と呼ばれるポップアップ メ ニュー を マ ウ ス ボタン 2,3 に割り当てます。メ ニューは、ウィンドウフレームかサイドバー、タイト ル バーで修飾キー (Shift,Ctrl,Meta) なしでボタン 2, 3 のどちらかが押された場合にポップアップし ま す。

     Mouse 2 FST N Popup "Window Ops"
     Mouse 3 FST N Popup "Window Ops"

ポッ プアップメニューは、組み込み関数 Key を使っ て、キーに割り当てることも可能ですし、キーに割り 当 て ればマウスなしで、上下の矢印キーとリターン キーで操作することも可能です。

あらかじめ定義されたポップアップメニューを、他のメ ニューに子メニューとして割り当てる方法:

以 下の例は子メニュー "Quit-Verify" を定義し、そ れを "RootMenu" という親メニューに割り当てていま す:

     AddToMenu Quit-Verify   "Really Quit Fvwm?" Title
     +                       "Yes, Really Quit"  Quit
     +                       "Restart Fvwm95"    Restart fvwm95
     +                       "Restart Fvwm2"     Restart fvwm2
     +                       "Restart Fvwm 1.xx" Restart fvwm
     +                       ""                  Nop
     +                       "No, Don’t Quit"    Nop

    AddToMenu RootMenu      "Root Menu"         Title
     + "Open an XTerm Window"  Popup NewWindowMenu
     + "Login as Root"         Exec xterm -fg green -T Root -n Root -e su -
     + "Login as Anyone"       Popup AnyoneMenu
     + "Remote Hosts"          Popup HostMenu
     + ""                      Nop
     + "X utilities"           Popup Xutils
     + ""                      Nop
     + "Fvwm Modules"          Popup Module-Popup
     + "Fvwm Window Ops"       Popup Window-Ops
     + ""                      Nop
     + "Previous Focus"        Prev [*] Focus
     + "Next Focus"            Next [*] Focus
     + ""                      Nop
     + "Refresh screen"        Refresh
     + "Recapture screen"      Recapture
     + ""                      Nop
     + "Reset X defaults"      Exec xrdb -load $HOME/.Xdefaults
     + ""                      Nop
     + ""                      Nop
     + "Quit"                  Popup Quit-Verify

Popup は、単なるクリックでは居続けない、という点で Menu と異なります。居続けないのは Twm スタイ ル の ポップアップメニューですが、これはやや手首に負担と な り ま す。 Menu は、Motif、 あ る い は Microsoft-Windows スタイルのメニューで、単一クリッ ク動作で居続けます。

Prev [conditions] command

これは、例えば Focus のような command を、全 て の conditions (条件) を満たす前のウィンドウに実行しま す。条件 は、"iconic", "!iconic", "CurrentDesk", "Visible", "!Visible", "CurrentScreen" などを含みます。さらに、条件に、 それにマッチした場合に実行させるようなウィンドウ名 を指定することもできます。そのウィンドウ名にはワイ ルドカード *, ? を使うことができます。ウィン ド ウ 名、クラス、リソースは、それにマッチするものを検索 しようとするときに参照されます。

Quit

これは fvwm95 を終了しますが、それは通 常 X の終了も引き起こします。

Raise

これでウィンドウを上 (前面) に上げることが できます。

RaiseLower

上 (下) がっているウィンドウを下 (上) に下 (上) げ ます。

Read filename

こ れは fvwm95 に filenameP という名前のファイルか らコマンドを読み込まさせます。

Recapture

これは fvwm95 に、全てのウィンドウ管理をやり直させ ま す (ウィンドウの再捕獲)。これは、直前のスタイル パラメータを確実に使用します。再捕獲の際には画面が 乱されます。

Refresh

こ れ はスクリーンの全てのウィンドウを再描画させま す。

Resize [ x y ]

これによりウィンドウの大きさの変更 (リサイズ) が行 えます。

オプション引数 x, y が与えられた場合、ウィンドウは その大きさが横 x, 縦 y であるように変更されま す。 x, y の単位はスクリーンに対する百分率ですが、文字 "p" を各座標につけた場合はピクセル単位となります。

Restart WindowManagerName

こ れ は、WindowManagerName が "fvwm95" の場合は、 fvwm95 を再起動させますし、 WindowManagerName が "fvwm95" 以外の場合は、その他の指定されたウィンド ウマネージャに切り替えます。そのウィンドウ マ ネー ジャ が デ フォ ル ト の 検 索 パ ス に ない場合、 WindowManagerName はフルパスで指定する必要がありま す。

こ のコマンドは、後ろに & やコマンドライン引数をつ けてはいけませんし、環境変数を使うようにしてもいけ ま せん。以下の例では、最初の 2 つのものは確かに失 敗しますが、 3 つ目のものは OK です:

     Key F1 R N Restart fvwm &
     Key F1 R N Restart $(HOME)/bin/fvwm
     Key F1 R N Restart /home/nation/bin/fvwm

SendToModule modulename string

これは、任意の文字列 (引用符で囲む必要はあり ま せ ん) を、 modulename にマッチする全てのモジュールに 送ります。 modulename には、ワイルドカードを使うこ ともできます。これは、そのモジュールが文字列を認識 し処理するように作られている場合にのみ意味を持ちま す。そして、これはモジュール間の通信や、モジュール 内のより複雑な実装に利用することができます。

Scroll horizontal vertical

これは仮想デスクトップのビューポートを、 x-方向 に horizontal ページだけ、 y 方向に vertical ページだ けスクロールします。一方、あるいは両方の指定は負の 値にもできます。 horizontal と vertical の両方の単 位は、ページのサイズに対する百分率 (パーセント) で す から、 "Scroll 100 100" は丸々 1 ページ分だけ右 下にスクロールすることを意味し、 "Scroll 50 25" は 右 にページの半分、下にページの 1/4 だけスクロール します。スクロール関数はポップアップメニューからは 呼んではいけません。スクロールは通常そのデスクトッ プの端で止まります。

horizontal と vertical の百分率が 1000 倍してあ る と、スクロールはデスクトップの端を越えて反対側の端 に戻ります。 "Scroll 100000 0" が何度も実行され た 場合、 fvwm95 は各実行で隣のデスクトップへ移動し、 そしてデスクトップの端で巻き戻しされ最初のデ ス ク トップに戻りますので、順番に全てのページに当たるこ とになります。

文字 "p" を各座標 (horizontal や vertical) の後 ろ に 追 加すると、スクロールの単位はピクセルになりま す。

Stick

これは、sticky (くっつく) でないウィンド ウ を sticky にし、既に sticky のウィンドウを sticky でないようにします。

StickyColors textcolor backgroundcolor

これには、sticky な (くっついた) ウィンドウのタ イ トルバーの文字色と背景色を指定します。

Style windowname options

こ の コマンドは古い fvwm 1.xx の大域的なコマンド: NoBorder, NoTitle, StartsOnDesk, Sticky, StaysOnTop, Icon, WindowListSkip, CirculateSkip, SuppressIcons, BoundaryWidth, NoBoundaryWidth, StdForeColor, StdBackColor を、柔軟で包括的なウィ ンドウ毎の単一のコマンドに置き換えようとします。こ のコマンドは、ウィンドウの属性にデフォルトとは異な る値を設定したり、ウィンドウマネージャのデフォルト スタイルを設定したりするのに使われます。

windowname は、ウィンドウ名、ウィンドウクラス、ま たはリソース文字列のいずれでも構いません。これには ワイルドカード *, ? を含めることも可能ですが、これ らは通常の Unix のファイル名に使われる場合と同じ意 味です。これらは上に述べたことの逆順に検索され、そ れによりリソース文字列による Style コマンドはク ラ ス 名による Style コマンドで上書き、あるいは追加さ れ、クラス名による Style コマンドは 名 前 に よ る Style コマンドで上書き、あるいは追加されます。

注 意: 名 前 (WM_NAME) を持たないウィンドウは "Untitled" という名前によって与え ら れ、 ク ラ ス (WM_CLASS, res_class) を 持 た ないウィンドウは "NoClass" とい う ク ラ ス に よっ て、 リ ソー ス (WM_CLASS, res_name) を 持 た な い リ ソースは "NoResource" というリソースによって与えられます。

options は、以下のキーワードの幾つかを含む、, ( コ ン マ) で 区 切 ら れ たリストです: BorderWidth, HandleWidth, NoIcon/Icon, TitleIcon, IconBox, NoTitle/Title, NoHandles/Handles, WindowListSkip/WindowListHit, CirculateSkip/CirculateHit, StaysOnTop/StaysPut, Sticky/Slippery, StartIconic/StartNormal, ForeColor, BackColor, StartsOnDesk/StartsAnyWhere, IconTitle/NoIconTitle, MWMDecor/NoDecorHint, MWMFunctions/NoFuncHint, HintOverride/NoOverride, NoButton/Button, OLDecor/NoOLDecor, StickyIcon/SlipperyIcon, SmartPlacement/DumbPlacement, RandomPlacement/ActivePlacement, DecorateTransient/NakedTransient, SkipMapping/ShowMapping, UseStyle, NoPPosition/UsePPosition, Lenience/NoLenience, MouseFocus|FocusFollowsMouse/SloppyFocus/ClickToFocus

上のリストにおいて、いくつかのオプションはスタイル オ プション/反スタイルオプションの形式になっていま す。反スタイルオプションが含まれている項目では、そ れ が fvwm95 でのデフォルトを意味し、それは fvwm95 のデフォルトの振舞いを変更したい場合に利用で き ま す。

Icon は、アイコンの白黒画像またはカラー画像として 使用するファイル名を、引用符には入れない文字列引数 として取ります (オプション引数)。

IconBox は数値引数を取ります:

IconBox

l t r b

こ こ で、l は左の座標で、同様に t は上、r は右、b は下の座標です。負の座標は、スクリーンの右下からの 距離を意味します。アイコンボックスはスクリーン内の ある領域で、 fvwm95 は他のアイコンと重ならない限り アイコンをそのウィンドウに出力しようとします。

StartsOnDesk は、そのウィンドウが最初に置かれるべ きデスクトップ番号を引数に取ります。標準的な Xt プ ログラムではそれをリソースを使っても指定できる (例 えば "-xrm ’*Desk: 1’") ことに注意してください。

BorderWidth は、リサイズハンドルを持たないウィンド ウにつける境界の幅を引数として取ります。

HandleWidth は、リサイズハンドルを持つウィンドウに つける境界の幅を引数として取ります。

Button と NoButton は、タイトルバーに含まれる/取り 除かれるボタンの個数を引数として取ります。

StickyIcon は、ウィンドウを、それがアイコン化され たときに sticky (くっついたもの) にするので、有 効 なデスクトップの上でアイコンを元のウィンドウに復元 できます。

MWMDecor は、fvwm95 に、mwm の装飾ヒント情報を認識 させ、考慮させようとします。ときどきそれを利用する アプリケーションがあります。

MWMFunctions は、fvwm95 に、mwm 禁止操作ヒント情報 を認識させ、考慮させようとします。ときどきそれを利 用するアプリケーションがあります。 HintOverride は fvwm95 に mwm が禁止する操作を隠しますが、これはあ なたにとにかくその操作を行わさせます。

OLDecor は、fvwm95 に olwm や olvwm のヒント情報を 認識させ、考慮させようとします。これらは大くの古い XView や OLIT アプリケーションが使用します。

UseStyle は引数を一つ取り、それは他のスタイルの 名 前です。この方法では無関係なウィンドウ名を使うこと ができますが、これにより新ためて設定し直すことなし に そ れ と同様の性質を継承することができます。例: ’Style "rxvt" UseStyle "XTerm"’

SkipMapping は、fvwm95 にそのウィンドウが最初に 配 置されるときに、それが乗っているデスクトップを変更 しないように伝えます (StartsOnDesk で有用です)。

Lenience は、ICCCM の勧告を無視するよう に fvwm95 に 指 示 し ま す。 これは、あるアプリケーションが wm_hints 構造体の input フィールドを False に セッ トした場合は、それはウィンドウマネージャがそれに入 力フォーカスを渡すことを決して望まない、と述べてい ま す。 私が知る、これを必要とする唯一のアプリケー ションは sxpm ですが、それは簡単に修正されるばかげ たバグであり、そのプログラムへの全体的な効果は全く 何もありません。他にも問題を持つ古いアプリケーショ ンがあるという噂です。

ClickToFocus は、そのウィンドウがクリックされたと きにフォーカスをそのウィンドウに 与 え る よ う に fvwm95 に指示します。 MouseFocus (またはその別名で ある FocusFollowsMouse) は、マウスポインタが そ の ウィンドウに入ったときに直ちにフォーカスをそのウィ ンドウに与え、ポインタがウィンドウから出たらフォー カ ス も 持 ち 去 る よ うに fvwm95 に指示します。 SloppyFocus も同様ですが、ポインタがウィンドウから 出てもルートウィンドウや ClickToFocus ウィンドウ上 を通過している間 (そこでクリックしていない場合) は フォーカスを手放しません。 ClickToFocus は、フォー カスを失わずにマウスを外に出すことを可能にします。

NoPPosition は、新しいウィンドウを追加したときに、 PPosition フィールドを無視するように fvwm95 に指示 し ます。 PPosition フィールドに固執するアプリケー ションもあるのですが、そういったものを持っていなけ れば、これは頭の痛い問題です。

RandomPlacement は、通常ユーザに配置させるウィンド ウを、ごくわずかにランダムな位置に自動的に配置しよ う と し ま す。 最 も いいのは RandomPlacement と SmartPlacement の両方を使うことです。

SmartPlacement は、通常ユーザに配置させるウィン ド ウを、スマートな位置、つまりそのスクリーン上の他の ウィンドウとは重ならない位置に自動的に配置しようと します。そのような場所が見つからなかった場合は、最 後の手段としてユーザ配置、またはもし指定されていれ ば ランダム配置 (RandomPlacement) が使用されます。 最もいいのは、RandomPlacement と SmartPlacement の 両方を使うことです。

例:

     # fvwm95 のデフォルトの挙動を、タイトルバーなしに変更
     # デフォルトのアイコンも定義
     Style "*" NoTitle,Icon unknown1.xpm, BorderWidth 4,HandleWidth 5

    # ウィンドウ毎の変更:
     Style "Fvwm*"     NoHandles,Sticky,WindowListSkip,BorderWidth 0
     Style "FvwmPager"                 StaysOnTop, BorderWidth 0
     Style "*lock"     NoHandles,Sticky,StaysOnTop,WindowListSkip
     Style "xbiff"               Sticky,           WindowListSkip
     Style "FvwmButtons" NoHandles,Sticky,WindowListSkip
     Style "sxpm"      NoHandles
     Style "makerkit"

    # タイトルバーを xterm にのみ復活
     Style "xterm"     Title

    Style "rxvt"      Icon term.xpm
     Style "xterm"     Icon rterm.xpm
     Style "xcalc"     Icon xcalc.xpm
     Style "xbiff"     Icon mail1.xpm
     Style "xmh"       Icon mail1.xpm, StartsOnDesk 2
     Style "xman"      Icon xman.xpm
     Style "matlab"    Icon math4.xpm, StartsOnDesk 3
     Style "xmag"      Icon magnifying_glass2.xpm
     Style "xgraph"    Icon graphs.xpm
     Style "FvwmButtons" Icon toolbox.xpm

    Style "Maker"     StartsOnDesk 1
     Style "signal"    StartsOnDesk 3

ウィ ンドウに対する全ての属性は、OR で認識されるこ とに注意してください。上の例では、"FvwmPager" は ウィ ン ド ウ 名 が 完 全 に 一 致する行により属性 StaysOnTop を取得しますが、 "Fvwm*" にもマッチする た め に NoHandles, Sticky, WindowListSkip も取得 し、 "*" にもマッチするために NoTitle も取得 し ま す。一つのウィンドウに対して相反するスタイルが指定 された場合は、最後に指定されたスタイルが使わ れ ま す。

NoIcon 属性がセットされると、指定されたウィンドウ はそれがアイコン化されたときに単に消えてしま い ま す。そのウィンドウはウィンドウリストから復帰できま す。 Icon が引数なしにセットされた場合、NoIcon 属 性が解除されますがアイコンは何も指定されていないこ とになります。 FvwmPager モジュールアイコンのみ 存 在することを許す例:

     Style "*" NoIcon
     Style "Fvwm Pager" Icon

Title

これは何もしません。これは popup や menu に タイトル行を挿入するのに使われます。

WarpToWindow x y

これは、カーソルを関連づけられたウィンドウへジャン プ さ せます。パラメータ x, y はデフォルトでの位置 で、ウィンドウの左上の角から右下への百分率で表した 値です (’p’ を数字に追加した場合はピクセル単位にな ります)。

Wait name

この組込み関数は、fvwm95 関数内でのみ使われるこ と を 意図しています。これは関数の実行を、name という 名前の新しいウィンドウが現われるまで一時停止 し ま す。fvwm95 はその停止の間完全に機能し続けます。こ れは、特に InitFunction 内で、ウィンドウを指定した デスクトップ上で起動したい場合に便利です:

     AddToFunc InitFunction "I" exec xterm -geometry 80x64+0+0
     +                      "I" Wait xterm

+ "I" Desk

0 2
+ "I" Exec

xmh -font fixed -geometry 507x750+0+0

+ "I" Wait xmh
+ "I" Desk 0 0

上の関数は、xterm を現在のデスクトップ上で起動し、 それが配置されるまで待ち、そしてデスクトップ 2 に 切 りかえて xmh を起動します。xmh ウィンドウが現れ た後で、制御をデスクトップ 0 に移します。

WindowList options

これは、現在デスクトップにある個々のウィンドウのタ イトルと (オプションで) その配置情報を表示したポッ プアップメニューを生成します (そしてそれを ポッ プ アッ プします)。アイコン化されたウィンドウの配置情 報はカッコでくくられて表示されます。そのウィンドウ の一覧のポップアップメニューからある項目を選択する と、そのウィンドウが現在そのデスクトップ上になけれ ば そ の ウィ ンドウをそこに移動し、デスクトップの ビューポートをそのウィンドウの左上の角が含ま れ る ページへ移動し、そのウィンドウがアイコン化されてい れば復元し、そのウィンドウを前 面 に 出 し ま す。 WindowList コマンドには、以下のオプションの一つ、 または複数のオプション引数をスペース区切りで与える ことができます:

ShowAllDesks - 全てのデスクトップの全てのウィンド ウ (WindowSkipList 命令で上げられたものを除く) を 表示します。これはデフォルトです。

ShowCurrentDesk - 現在のデスクトップ上のウィンドウ のみ表示します。

ShowDesk n - デスクトップ番号 n のウィンドウのみを 表示します。

ShowGeometry - これを指定すると、各ウィンドウの配 置情報もリストに追加します。デフォルトではこのオプ ションは無効になっています。

UseWindowNames - 各ウィンドウは、そのウィンドウ ( タイトルバー) 名で表示されます。これがデフォルトで す。

UseIconNames - タイトル名の代わりにウィンドウのア イコン名が使われます。

WindowFont fontname

これは、ウィンドウのタイトルバー用に、"fixed" の代 わりに fontname という名前のフォントを fvwm95 に使 わせます。

WindowsDesk new_desk

これは、設定されたウィンドウを new_desk と指定され たデスクトップへ移動します。

XORvalue number

これは、ゴムひも状のウィンドウの移動やサイズ変更を 行うときに、値をビット毎の XOR で変更します。こ の 値の設定は試行錯誤で行ってください。

+

これは、直前に指定された関数やメニューに追加し 続けるのに使われます。 AddToFunc や AddToMenu での 議論を参照してください。

キーボードショートカット

全 て (私の考えるに) のウィンドウマネージャの操作は、キー ボードから行うこともでき、マウスなしの操作が可能になってい ます。 Scroll 組込み関数を適当なキーに割り当てることで仮想 デスクトップを巡回できるだけでなく、ポップアップ、移動、サ イズ変更、その他ほとんどの組込み関数をキーに割り当てられま す。その場合組込み関数が一度開始されると、マウスポインタは 上下左右の矢印キーを使って移動され、その動作はリターンを打 つことで終了します。シフトキーを押すとポインタの移動はより 大きなステップになり、コントロールキーを押すとポインタの移 動はより小さなステップになります。矢印キーの代わりに、標準 的 な emacs や vi のカーソル移動制御 (^n, ^p, ^f, ^b, 及び ^j, ^k, ^h, ^l) を使うこともできます。

設定例の提供

fvwm95 配布物に、設定ファイル .fvwm95rc のサンプルファイル が提供されています。これには十分にコメントが書かれていて、 fvwm95 の設定ファイルの設定例の原本として使用できます。

マルチスクリーンディスプレイ上での使用について

コマンドライン引数 -s を指定しないと、fvwm95 は自動的に 指 定 さ れ た ディスプレイの全てのスクリーン上で起動します。 fvwm95 が起動した後では個々のスクリーンは独立したものと し て扱われ、 fvwm95 の再起動も、各スクリーンで別々に行わなく てはなりません。マ ル チ ス ク リー ン ディ ス プ レ イ で は、EdgeScroll 0 0 を使用することを強く推奨します。

X との対話を完全に終了するには、個々のスクリーンで終了する 必要があるでしょう。

バグ

fvwm 0.99 の時点では、丁度 39.342 個の正体不明のバグがあり ましたが、確認されたバグはほとんど修正され、その後 9.34 個 のバグが修正されました。確認されたバグ一つに対して、少なく と も 10 個のバグが存在すると仮定すると、 39.342 - 9.34 + 10 * 9.34 = 123.402 個の正体不明のバグが現在まだ残っている ことになります。この理屈の論理的帰結に従えば、プログラムの バグがない状態にまでバグの個数が減少する前に、正体不明なバ グの個数が無限大になってしまうことになるでしょう。しかし倍 精度まで要求しなければ、これはコンピュータプログラムでの無 限 大 = 3.4028e+38 ですから、現在のバグ発見の割合では、 3.37e+27 年にはバグなしの状態に達する見通しです。私はこ の ことを引き継いでいこうと考えています。私の子供達に...

確 認されているバグは、配布物のファイル BUGS、および TO-DO のリストに書かれています。

著者

多くの人々の助力により、Tom LaStrange によって書かれた twm の コードを元に Robert Nation によって作成されました。しか し Rob は fvwm の作業からは ’引退’ し た の で、 現 在 は Charles Hines がその世話と供給を保守しています。