FVWM

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

名前

fvwm2 − X11 用の F(?) 仮想ウィンドウマネージャ (version 2.xx)

形式

fvwm [ options ]

説明

fvwm は X11 用のウィンドウマネージャです。これは twm を 元 に 作 られていて、メモリの消費を最小化するよう再設計され、 ウィンドウの枠の 3 次元的表示と簡単な仮想デスクトップを 提 供 します。バージョン 2.xx は、1.xx よりごくわずかに多くの メモリを使うのみですが、それはほぼ、いくつかの大域的なオプ ションを各ウィンドウ毎のオプションにすることを可能にするた めです。

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

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

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

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

COPYRIGHTS ( 原文 )

Since fvwm is derived from twm code it shares twm’s copyrights. Since nearly every line of twm code has been changed, the twm copyright has been removed from most of the individual code files. I do still recognize the influence of twm code in the overall package, so fvwm’s copyright is still considered to be the same as twm’s.

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.

著作権 ( 日本語訳 )

fvwmtwm のコードからの派生物なので、 fvwmtwm の著 作権を共有します。 twm のほとんどすべてのコードは変更さ れ て い ますので、ほとんどの個々のソースコードファイルからは twm の著作権表示は取り除かれていますが、私はパッケージ全体 に渡る twm のコードの影響を今でも認識していますから、 fvwm の著作権は今でも twm のものと全く同じと考えます。

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

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

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

ウィンドウの構造

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

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

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

仮想デスクトップ

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

仮 想デスクトップのサイズ (m x n; すなわちページ数) は、組 み込みコマンド 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

初期化

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

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

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

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

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

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

コンパイルオプション

fvwm は、コンパイル時にいくつかの機能の使用を制限するこ と でメモリの使用を減らすことができるような色んな方法を用意し ています。あるコマンドや機能の利用のトラブルがあれば、その 機能がサポートされるようにコンパイルされたかをチェックして ください。必須でない機能は、Imake の設定ファイル Fvwm.tmpl に詳しく書かれています。

アイコン

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

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

モジュール

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

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

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

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

ICCCM 勧告への対応度

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

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

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

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

M4 による前処理

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

     fvwm -cmd "FvwmM4 .fvwm2rc"

CPP による前処理

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

AUTO-RAISE

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

オプション

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

-f config_file

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

-cmd config_command

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

-debug

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

-d displayname

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

-s

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

-version

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

設定ファイル

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

(fvwm 自身の設定コマンドではなく) モジュールの設定コマンド が含まれる行とみなされます。

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

組み込み関数

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

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

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

AddButtonStyle button [state] [style] [ -- [!]flag ... ]

こ れ は一つのボタンスタイルを button に割りあてま す。 button は、ボタン 番 号 か、 ま た は "All", "Left", "Right" の い ず れ か で す。 state は、"ActiveUp", "ActiveDown", "Inactive" のいず れ かです。 state を省略すると、全ての状態 (state) に そのスタイルが追加されます。ボタンスタイルとフラグ が カッコでくくれば、一行に複数の状態 (state) の定 義を書くことができます。追加するボタンスタイルに対 するフラグは、その後の定義では変更できません。

ボタンは、定義された順に書かれます。つまり、一番最 近定義された ButtonStyle に始まり、それに追加し た AddButtonStyle がそれに続きます。ボタンスタイルの 定義の積み重ねを消去するには、スタイルフラグを変更 してください。有効なスタイルとフラグに関する詳細に ついては、 ButtonStyle コマンドの項を参照してく だ さい。例:

     ButtonStyle 1 Pixmap led.xpm -- Top Left
     ButtonStyle 1 ActiveDown HGradient 8 grey black
     ButtonStyle All --  UseTitleStyle
     AddButtonStyle 1 ActiveUp (Pixmap a.xpm) ActiveDown (Pixmap b.xpm -- Top)
     AddButtonStyle 1 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1

この例では、最初にボタンの全ての状態が一つのピクス マップ画像に設定されています。 2 行目は ActiveDown 状態をグラデーションに置きかえています (これは前の 行で、全ての状態に対して同じスタイルとして割り当て た ピ ク ス マッ プ画像の設定を無効にします)。そし て、UseTitleStyle フラグが全てのボタンに対して設定 され、それはボタンを描画する前に fvwm に任意のスタ イルを TitleStyle に設定させます。そし て 最 後 に AddButtonStyle を使って、 ActiveUp と ActiveDown の状態に追加のピクスマップ画像を設定し、全ての状態 の一番上に、ベクトルボタンスタイルが追加されます。

AddTitleStyle [state] [style] [ -- [!]flag ... ]

これはタイトルバーにタイトルスタイルを追加します。 state は、"ActiveUp", "ActiveDown", "Inactive" の いずれかです。 state を省略すると、 全 て の 状 態 (state) にそのスタイルが追加されます。ボタンスタイ ルとフラグをカッコでくくれば、一行に複 数 の 状 態 (state) の定義を書くことができます。このコマンド は、AddButtonStyle コマンド (上を参照) と全く同 様 です。

タイトルバーは、定義された順に書かれます。つまり、 一番最近定義された TitleStyle に始まり、それに追加 した AddButtonStyle がそれに続きます。タイトルスタ イルの定義の積み重ねを消去するには、スタイルフラグ を変更してください。有効なスタイルとフラグに関する 詳細については、 TitleStyle と ButtonStyle コマ ン ドの項を参照してください。

AddToDecor decor

これは、decor という名前の装飾にコマンドを追加、転 換します。装飾 (decor) とは、 ボ タ ン ス タ イ ル (ButtonStyle)、 タ イトルバースタイル (TitleStyle) 、ボーダースタイル (BorderStyle)、ハイライトカラー (HilightColor)、ウィンドウフォント (WindowFont) に 影響を与える複数のコマンドの集合につけられた名前で す。 decor が存在しなかった場合は作られますが、そ うでなければ既に存在する decor が変更されます。

生成された装飾 (decor) は、任意のスタイル定義を 除 いたデフォルトの fvwm の装飾と丁度同じものとして出 発します。与えられた装飾は、Style コ マ ン ド の UseDecor オプションにより、ウィンドウの集合に適用 できます。既に存在する装飾を修正すると、現在それが 割り当てられているウィンドウも影響を受けます。

AddToDecor の使用法は、AddToMenu, AddToFunc コマン ドと同様で、違いはそれ ら の メ ニュー や 関 数 が ButtonStyle, AddButtonStyle, TitleStyle, AddTitleStyle, BorderStyle, HilightColor, WindowFont コマンドに変わるだけです。 AddToDecor で生成された 装 飾 は、ChangeDecor, DestroyDecor, UpdateDecor コ マ ン ド や、Style オプションの UseDecor などで操作できます。

以下は、装飾とスタイルを生成する例で、いずれも名前 は "flatness" です。同じ名前ですが、それらの実体は 別ものです:

     AddToDecor flatness
     + ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)
     + TitleStyle -- flat
     + BorderStyle -- HiddenHandles NoInset
     + HilightColor white navy
     Style "flatness" UseDecor flatness,Color white/grey40,HandleWidth 4

    Style "xterm" UseStyle flatness

既に存在するウィンドウの装飾は ChangeDecor、あるい は Style コマンドに続く Recapture で割り当て直すこ とができます。 UpdateDecor により、全てのウィン ド ウの装飾、または特定の装飾一つを更新できます (これ は装飾を変更した後で有用で、Style オプションの変更 の場合はその代わりに Recapture が必要になります)。 装飾は、DestroyDecor で破壊できます。

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 Fvwm"     Popup Quit-Verify

このメニューは、

     Mouse 1 R       A       Menu Utilities Nop

     Mouse 1 R       A       Popup Utilities

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

メ ニュー ラ ベルが ’*’ で始まる部分文字列を含む場 合、みなされ、メニューに挿入されます。例えば、

+

"Calculator*xcalc.xpm*"

Exec xcalc

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

+

"*xcalc.xpm*" Exec xcalc

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

メニューラベルが ’%’ で始まる部分文字列を 含 む 場 合、みなされ、メニューラベルの左に挿入されます。例 えば、

+

"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

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

Key F11

R

A

Function MailFunction zmail "-bg pink"

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

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

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

Beep

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

BorderStyle [state] [style] [ -- [!]flag ... ]

こ れ は、ウィンドウの境界のスタイルを定義します。 state は、"Active" か "Inactive" のいずれかで す。 state を 省 略した場合、そのスタイルは両方の状態 (state) に対して設定されます。スタイルとフラ グ を カッ コでくくれば、一行に複数の状態 (state) の定義 を書くことができます。

style は、有効な ButtonStyle の部分集合で、それ は TiledPixmap (斜面の色にマッチする一様なピクスマッ プ画像がこれに最も良く合います) のみが可能です。任 意 のフラグの前に "!" をつけた場合、そのフラグの意 味は否定されます。 style を指定しなければ、スタ イ ルをリセットせずにフラグを変更できます。

フ ラグ "HiddenHandles" は、ウィンドウ上で線で分離 されている角のハンドル (corner handle) をハンド ル で隠します (このオプションは NoHandle のウィンドウ には何の効果も持ち ま せ ん)。 デ フォ ル ト で は HiddenHandle は無効になっています。

フ ラグ "NoInset" は、HiddenHandles を補足します。 これが指定された場合、ウィンドウの枠の内側の斜面は 描 画されません。 HiddenHandles が指定されない場合 は、このフラグは何の効果も持ちません。

アクティブ、非アクティブなウィンドウの境界を生地の ピ ク スマップ画像で飾るには、以下のように指定しま す:

     BorderStyle Active TiledPixmap marble.xpm
     BorderStyle Inactive TiledPixmap granite.xpm
     BorderStyle Active -- HiddenHandles NoInset

両方の状態にスタイルをクリアするには:

     BorderStyle Simple

一つの状態の方をクリアするには:

     BorderStyle Active Simple

与えられた状態のフラグのセットを解除するには:

     BorderStyle Inactive -- !NoInset

タイトルバーボ タ ン は、UseBorderStyle フ ラ グ (ButtonStyle 参照) を使って、ボーダースタイルを継 承することができます。

ButtonStyle button [state] [style] [ -- [!]flag ... ]

これは、タイトルバーボタンのボタンスタイルを設定し ま す。 button は、0 から 9 までのタイトルバーボタ ン番号、または "All", "Left", "Right", "Reset" の う ちのいずれかです。ボタン番号については Mouse の 項 (下を参照) で説明します。スタイルとフラグをカッ コ でくくれば、一行に複数の状態 (state) の定義を書 くことができます。

state は、ボタンのどの状態にセットするのかを指示し ま す。ボタンの状態は以下のように定義されています: 状態 "ActiveUp" と "ActiveDown" は、アクティブ (有 効) なウィンドウのボタンが、それぞれ押されていな い、押されている状態を、状態 "Inactive" は非 ア ク ティ ブ (非有効) なウィンドウのボタンを示していま す。

state が ActiveUp, ActiveDown, Inactive の場合は、 その特定のボタンの状態に対して設定されます。 state が省略された場合は、全ての状態に設定されます。スタ イルを指定すると、現在のスタイルは破壊されます (こ れを避けるには AddButtonStyle を使用し て く だ さ い)。

style を省略すれば、現在のスタイルを破壊せずに、前 のボタンスタイルに対する状態依存フラグを設定できま す。例 (各行は独立に考慮されます):

     ButtonStyle Left -- flat
     ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)

最 初 の 行は全ての状態 (state) の左のボタンを平ら (flat) に設定しますが、 2 行 目 は、ActiveUp と Inactive な 状 態 にだけ、その全てのボタンを平ら (flat) に設定します (フラグのみが変更され、その 個 々のスタイルは変更されません)。

全てのボタンをそのデフォルトにリセットしたいなら:

     ButtonStyle Reset

ボ タン 1 の ActiveUp の状態をデフォルトにリセット したいなら:

     ButtonStyle 1 ActiveUp Default

ボタン 1 の全ての状態を、ボタン番号 2 のデフォルト にリセットしたいなら:

     ButtonStyle 1 Default 2

任意のボタンに対して、スタイルとフラグをカッコでく くれば 1 行で複数の状態に対する定義を指定 で き ま す。 1 行に 1 つの定義しかしないなら、カッコは不要 です。

flags は指定した state に影響を与えます。 任 意 の flag に "!" をつけるとその振舞いは否定されます。利 用できる、全てのスタイルに対する状態依存フラグは、 以 下に記します (次の ButtonStyle の項では状態非依 存フラグを扱います)。

"Raised" は、浮び上がったレリーフパターン (浮き 彫 り模様) を描画します。

"Sunk" は、 沈み込んだレリーフパターンを描画しま す。

"Flat" は、レリーフパターンの描画を抑制します。

"UseTitleStyle" は、与えられたボタン状態に対して、 ボタン自身のスタイルの前に現在のタイトルスタイルを 描画させます。 TitleStyle の Raised, Flat, Sunk の フラグは、この文脈では冗長であり無視されます。

"UseBorderStyle" は、 ボ タ ン に 装 飾 さ れ た BorderStyle のオプションを継承させます。

Raised, Sunk, Flat はお互いに排他 的 で、 最 初 の ButtonStyle にだけ指定できます。 UseTitleStyle と UseBorderStyle も排他的です (しかし両方を同時に 無 効 に は で き ま す)。 デ フォ ル ト は Raised で、UseBorderStyle と UseTitleStyle はどちらも設定 されていません。

ActiveDown 状態に対する 重要な注意 があります。ボ タンが押された場合、そのレリーフは逆転されます。こ の ため、ActiveDown の状態で沈みこんだ状態にするに は、望んだレリーフの正反対のものを指定する必要があ るのです (すなわち、盛り上がっているような、押し込 まれた見た目を作るには、 ActiveDown に Sunk を指定 し なければいけません)。この仕様は首尾一貫したもの なのですが、最初は紛らわしく見えるかもしれません。

ボタンスタイルは、非破壊的なもの、部分的に破壊的な もの、完全に破壊的なもの、に分類されます。非破壊的 なスタイルは、画像に影響を与えません。部分的に破壊 的なスタイルは、下に横たわる画像 (ピクスマッ プ 画 像) を部分的、または全ての部分を覆い隠すことができ ます。完全に破壊的なスタイルは下に横たわる画像全体 を覆い隠します (Solid またはグラデーションスタイル の一つ)。よって、AddButtonStyle (またはタ イ ト ル バーに対する AddTitleStyle) でスタイルを積み上げて いる場合は、それが最小限の重ね塗りになるように並べ 方に注意してください。

利用できるスタイルとその引数は、以下に記します (コ ンパイル時の設定によって、利用できないボタンスタイ ルがあるかもしれません)。

"Simple" スタイルは、何もしません。これには引数も ありませんし、このスタイルは非破壊的なボタンスタイ ルの一例です。

"Default" スタイルは、条件的に一つの引数を受け付け ます: それは読み込むデフォルトのボタン番号を指定す る 番号です。このスタイルコマンドが ButtonStyle か AddButtonStyle で与えられると、引数は必須ではな く なります (与えた場合は現在のボタン番号に上書きしま す)。 ButtonStyle と AddButtonStyle 以外で使われた 場合は、番号は必ず指定しなければいけません。

"Solid" スタイルは、ボタンを非透過色で塗り潰しま す。レリーフの境界色は影響を受けません。その色は一 つの引数で指定します。このスタイルは完全に破壊的で す。

"Vector" スタイルは、直線による模様を描画しま す。 こ れ は 標 準的なボタンスタイルなので、キーワード "Vector" は省略できますが、その指定は少し厄介です:

     ButtonStyle 2 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1

この指定は、ボタン 2 の装飾に 4 点パターンを使用し ていて、影の色 (@0) の (x=50,y=30) から (70,70) へ の 線分、そこから影の色の (30,70) への線分、最後に 明るい色 (@1) の (50,30) への線分から作られてい ま す。難しすぎますか ? 2,3 の例に関しては、.fvwm2rc のサンプルを参照してください。このスタイルは部分的 に破壊的です。

"VGradient", "HGradient" スタイルは、グラデーショ ンスタイルを表します。頭の H や V は、水平方向と垂 直方向を意味します。

このスタイルは次の 2 つの形式を持ちます:

1 つ目の形式は、線形グラデーションを指定しま す。引数: 割り当てる色の総数 (2 から 128 まで)、 最初の色、最後の色。

2 つ目の形式は、非線形グラデーションの指定です。 引数: 割り当てる色の総数 (2 から 128 まで) と、 いくつかのパラメータブロック。各ブロックで、最初 の色、増加の割合 (%)、最後の色を指定します。各ブ ロックは、直前のブロックの色から開始します。全て の割合 (%) の合計は 100 である必要があります。

例:

     TitleStyle VGradient 16 3 Red 20 Blue 30 Black 50 Grey

グラデーションスタイルは完全に破壊的です。

"Pixmap" スタイルは、ピクスマップ画像を表 示 し ま す。 ピ クスマップ画像は引数として指定します。例え ば、以下のものは、ボタン 2 の両方の状態に同じピ ク スマップ画像を与え、ボタン 4 の up, down, inactive のそれぞれに異なるピクスマップ画像を与えます。

     ButtonStyle 2 Pixmap my_pixmap.xpm
     ButtonStyle 4 ActiveUp (Pixmap up.xpm) ActiveDown (Pixmap down.xpm)
     ButtonStyle 4 Inactive Pixmap inactive.xpm

ピクスマップ画像の指定は、絶対パス、相対パスのどち らの指定も可能です (PixmapPath 参照)。ピクスマップ 画像が見つかない場合、ボタンスタイルは Simple に戻 り ま す。 Pixmap スタイル特有のフラグは "Left", "Right", "Top", "Bottom" です。これらは、 ピ ク ス マップ画像の位置合わせに使われます (デフォルトは、 両方向に対する中央合わせです)。ピクスマップ画像 の 透過性は、色 "None" に対して使用されます。このスタ イルは、部分的に破壊的です。

"MiniIcon" スタイルは、Style コマンド の MiniIcon オプションが指定されたボタン内に、ウィンドウのミニ チュアのアイコンを描画します。このボタンスタイルに は引数はありません。例:

     Style "*"          MiniIcon mini-bx2.xpm
     Style "xterm"      MiniIcon mini-term.xpm
     Style "Emacs"      MiniIcon mini-doc.xpm

    ButtonStyle 1 MiniIcon

"TiledPixmap" スタイルは、ボタンの背景として、ピク スマップ画像をタイル張りします。引数としてピ ク ス マップ画像を一つ指定します。ピクスマップ画像の透過 性は使えません。このスタイルは、完全に破壊的です。

ButtonStyle button - [!]flag ...

これは、指定されたボタンに対し状態に依存しないフラ グを設定します。状態に依存しないフラグは、ボタンの 振舞いに影響を与えます。各フラグは、スペースで区切 ります。"!" をフラグにつけると、その振舞いは否定さ れ ます。 "Clear" は特別なフラグで、これは存在する 任意のフラグを消去します。

以下のフラグは、通常、MWM function hint によりどの ボタンが影響を受けるべきなのかを fvwm に通知するの に使われます。これは、例えば複雑な関数をボタンに割 り当てられるように、自動的には行われないようになっ ています。

"MWMDecorMenu" は、メニューを表示するタイトル バー ボタンに割り当てます。デフォルトの割り当ては最も左 のボタンです。 MWMFunction スタイルオプションを 持 つウィンドウがこのボタンを表示しないように要求した 場合、それは隠されます。

"MWMDecorMin" は、ウィンドウを最小化、あるいはアイ コン化するタイトルバーボタンに割り当てます。デフォ ルトの割り当ては、最も右から 2 つ目のボタンで す。 MWMFunction スタイルオプションを持つウィンドウがこ のボタンを表示しないように要求した場合、それは隠さ れます。

"MWMDecorMax" は、ウィンドウを最大化するタイトル バーボタンに割り当てます。デフォルトの割り当ては最 も 右のボタンです。 MWMFunction スタイルオプション を持つウィンドウがこのボタンを表示しないように要求 した場合、それは隠されます。

ChangeDecor decor

こ れ は、 ウィンドウの装飾を decor に変更します。 decor は "Default"、または AddToDecor で定義された 装 飾の名前です。 decor が有効でない場合、何もしま せん。ウィンドウ内、あるいはその境界上のどこかで呼 び出された場合は、そのウィンドウに影響を与えます。 ルートウィンドウ上で呼び出された場合は、ユーザに対 象 と な る ウィンドウを選択させます。 ChangeDecor は、AddToDecor コマンドを使って設定できる属性に の み影響を与えます。

ChangeDecor "CustomDecor1"

ClickTime delay

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

Close

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

ColormapFocus [FollowsMouse | FollowsFocus]

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

Current [conditions] command

これは、現在のウィンドウがすべての conditions を満 た した場合、そのウィンドウ上で command を実行しま す。条件 (conditions) は、以下のものから成りま す: "Iconic", "!Iconic", "Visible", "!Visible", "Sticky", "!Sticky", "Maximized", "!Maximized", "Transient", "!Transient", "Raised", "!Raised", "CurrentDesk", "CurrentPage", "CurrentPageAnyDesk"。さらに、条件には、マッチさせ ようとするウィンドウの名前を書くこともでき ま す。 ウィンドウ名には、ワイルドカード *, ? を入れること も可能です。そのマッチするものの検索のとき に は、 ウィンドウの名前、アイコン名、クラス名、リソースが 考慮されます。ウィンドウ名の最初に ! を置くこと も できますが、その場合、ウィンドウ名、アイコン名、ク ラス、リソースがそれにマッチする任意のウィンドウ上 で、command の実行を防ぎます。

CursorMove horizontal vertical

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

CursorStyle context cursornum

こ れは、指定された状況 (context) に対する新しいマ ウスカーソルを定義します。以下のような状況が指定で きます。

     POSITION     - ウィンドウの初期配置時に使用 (XC_top_left_corner)
     TITLE        - ウィンドウタイトルバー内で使用 (XC_top_left_arrow)
     DEFAULT      - カーソル設定のないウィンドウ内で使用 (XC_top_left_arrow)
     SYS          - タイトルバーボタン上で使用 (XC_hand2)
     MOVE         - ウィンドウの移動とリサイズ時に使用 (XC_fleur)
     WAIT         - EXEC 組込みコマンド時に使用 (XC_watch)
     MENU         - メニュー上で使用 (XC_sb_left_arrow)
     SELECT       - アイコン化などの色々な組込みコマンド用 (XC_dot)
     DESTROY      - DESTROY, CLOSE, DELETE 組込みコマンド用 (XC_pirate)
     TOP          - ウィンドウの上端の境界線上で使用 (XC_top_side)
     RIGHT        - ウィンドウの右端の境界線上で使用 (XC_right_side)
     BOTTOM       - ウィンドウの下端の境界線上で使用 (XC_bottom_side)
     LEFT         - ウィンドウの左端の境界線上で使用 (XC_left_side)
     TOP_LEFT     - ウィンドウの左上角で使用 (XC_top_left_corner)
     TOP_RIGHT    - ウィンドウの右上角で使用 (XC_top_right_corner)
     BOTTOM_LEFT  - ウィンドウの左下角で使用 (XC_bottom_left_corner)
     BOTTOM_RIGHT - ウィンドウの右下角で使用 (XC_bottom_right_corner)

cursornum は、 イ ン ク ルー ド ファ イ ル X11/cursorfont.h で定義されているカーソルの番号 で す。例:

             # kill カーソルを XC_gumby にする:
             CursorStyle DESTROY 56

それぞれのデフォルトは上のカッコの中に書いてありま す。

Delete

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

Desk arg1 arg2

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

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

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

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

DeskTopSize HorizontalxVertical

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

Destroy

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

DestroyFunc

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

DestroyFunc "PrintFunction"

DestroyDecor decor

これは、AddToDecor で定義した decor を削除し、それ に よ り、 この後この decor への参照が無効になりま す。この decor を使用しているウィンドウは fvwm の デ フォルトの装飾に戻ります。 "Default" という名前 の装飾は削除できません。

DestroyDecor "CustomDecor1"

DestroyMenu

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

DestroyMenu "Utilities"

DestroyModuleConfig

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

DestroyModuleConfig FvwmFormFore
DestroyModuleConfig FvwmButtons*

Echo string

これは、メッセージを stderr に出力します。これは、 多分あなたの .fvwm2rc に書かれているものをデバッグ するのに有用でしょう。

             Echo Beginning style defs...

EdgeResistance scrolling moving

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

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

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

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

EdgeScroll horizontal vertical

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

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

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

FlipFocus

これは最後にフォーカスした 2 つの ウィ ン ド ウ の フォーカスを入れかえます。

Focus

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

Function nctionName

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

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

     Mouse 1 T A Function Move-or-Raise

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

GlobalOpts [options]

これは、いくつかの大域的なオプションを設定するのに 使われる「一時的」なオプションで、これは今後 Style パラメータとして、あるいは Style パラメータへの オ プションとして扱われることになるでしょう。現在は以 下 の も の を 扱 い ま す: SmartPlacementIsReallySmart/SmartPlacementIsNormal, ClickToFocusDoesntPassClick/ClickToFocusPassesClick, ClickToFocusDoesntRaise/ClickToFocusRaises, MouseFocusClickDoesntRaise/MouseFocusClickRaises

     GlobalOpts ClickToFocusDoesntPassClick, ClickToFocusDoesntRaise

GotoPage x y

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

HilightColor textcolor backgroundcolor

これは、現在キーボードフォーカスを持つウィンドウの 装飾の文字色と背景色を設定します。

IconFont fontname

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

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

これは、キーボードのキーを、指定された fvwm の組み 込 み関数に割り当てますが、 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 は、メニューを作り出すと き にユーザがダブルクリックした場合に呼び出されるもの です。

MenuStyle forecolor backcolor shadecolor font style

これは、メニュースタイルを設定します。白黒を使用し て い る場合は色は無視されます。 shadecolor は、メ ニューの選択画面を描画するのに使われますが、 こ れ は、 あ る アプリケーションが指定した mwm-hint

に よって禁止 (あるいは非推奨) されています。オプショ ン style は "fvwm", "mwm" のいずれかで、これはメ ニューの見た目を変更します。

Module ModuleName

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

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

ModulePath path

こ れには、fvwm がモジュールを読み込むときにそれを 探すパスのリストを環境変数ここで使用することもでき ます ($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 には、fvwm の組み込み関数の一つを与 え ま す。

タイトルバーボタンは、奇数番号は左に、偶数番号は右 に番号づけされています。小さい番号のボタンがウィン ドウの外側へ、大きい番号のボタンがウィンドウの真ん 中に来るように表示されます (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 (条件) を満たす次のウィンドウに実行しま す。条件は Current のものに加え、 CirculateSkip ス タ イル属性を無効にする CirculateHit、アイコン化さ れたウィンドウの CirculateSkipIcon スタイル属性 を 無効にする CirculateHitIcon が使えます。

None [conditions] command

こ れは、全ての conditions (条件) を満たすウィンド ウが存在しない場合に command を実行しま す。 条 件 は、Next のものと全く同じものが使えます。

OpaqueMoveSize percentage

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

PipeRead cmd

これは、fvwm に 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 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 (条件) を満たす前のウィンドウに実行しま す。条件は、Next と同じです。

Quit

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

Raise

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

RaiseLower

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

Read filename

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

Recapture

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

Refresh

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

RefreshWindow

これは現在 (あるいは選択された) ウィンドウにそれ自 身を再描画させます。

Resize [ x y ]

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

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

Restart WindowManagerName

これは、WindowManagerName が "fvwm2" の 場 合 は、 fvwm を 再 起動させますし、 WindowManagerName が "fvwm2" 以外の場合は、その他の指定されたウィンドウ マネージャに切り替えます。そのウィンドウマネージャ が デ フォ ル ト の 検 索 パ ス に な い 場 合、 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" が何度も実行された 場合、 fvwm は各実行で隣のデスクトップへ移動し、そ してデスクトップの端で巻き戻しされ最初のデスクトッ プに戻りますので、順番に全てのページに当たることに なります。

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

Stick

これは、そのウィンドウが現在 sticky でない 場合は sticky にして、それが現在 sticky の場 合 は 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 コマンドで上書き、あるいは追加されます。

options は、以下のキーワードの幾つかを含む、, (コ ンマ) で区切ら れ た リ ス ト で す: BorderWidth, HandleWidth, NoIcon/Icon, MiniIcon, IconBox, NoTitle/Title, NoHandles/Handles, WindowListSkip/WindowListHit, CirculateSkip/CirculateHit, StaysOnTop/StaysPut, Sticky/Slippery, StartIconic/StartNormal, Color, ForeColor, BackColor, StartsOnDesk/StartsAnyWhere, IconTitle/NoIconTitle, MWMButtons/FvwmButtons, MWMBorder/FvwmBorder, 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, ClickToFocus/SloppyFocus/MouseFocus|FocusFollowsMouse

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

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

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

IconBox

l t r b

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

MiniIcon は、ウィンドウに対する小型アイコンとし て 使用するピクスマップ画像ファイルを指定します。この 小型アイコンは、タイトルバーボタンの中に描くことが で き ま す (ButtonStyle 参照) し、色々な fvwmモ ジュール (FvwmWinList, FvwmIconMan, FvwmTaskBar) で利用できます。これは、一つの引数としてピクスマッ プ画像ファイルの名前を取ります。

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

StaysOnTop は、そのウィンドウが常に他のウィンドウ の一番上 (手前) にいるように努力させます。これは、 時計や郵便箱のように常に見えていたいと思うようなも のに対して便利です。そのウィンドウが明示的に下げら れた (奥に移動された) 場合、それが明示的に上げられ るまで、強制的には一番上に戻そうとは し ま せ ん。 StaysPut (これがデフォルト) は、そのウィンドウが隠 されて、その状態でいつづけることを許します。

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

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

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

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

MWMButtons は、そのウィンドウが最大化され た と き に、最大化ボタンを押しこまれた見た目にします。詳細 は、ButtonStyle の MWMButton フラグの項を参照し て ください。

MWMBorder は、より mwm のものに近い 3 次元の斜面を 作ります。

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

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

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

Color は 2 つの引数を取ります。最初の引数は、 ウィ ン ドウラベル文字列色で、 2 番目のものはウィンドウ の飾りの通常の背景色です。この 2 つの色 は ス ラッ シュ (/) で分離して指定します。スラッシュを使うと 問題がある場合は、別々にオプション ForeColor と BackColor

を使用することもできます。

UseDecor は一つの引数を受けつけ、それは AddToDecor で生成された装飾 (decor) の名前です。 UseDecor が 指定されない場合、"Default" の装飾が使用されます。 ウィンドウは実際には装飾を含んでいませんが、常にそ の 一 つ に 結 び つ け ら れ ています。装飾が後で AddToDecor で変更された場合、それに結びつけられ た すべてのウィンドウの見た目が変わります。あるウィン ドウの装飾は、ChangeDecor で再割り当てすることがで きます。

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

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

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

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

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

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

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

例:

     # fvwm のデフォルトの挙動を、タイトルバーなしに変更
     # デフォルトのアイコンも定義
     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, Color black/grey

    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 "FvwmPager" Icon

Title

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

TitleStyle [justification] [height num]

こ れ は、 タ イトルバーに対する属性を設定します。 justification には、"Centered", "RightJustified", "LeftJustified" を指定できます。 height は、ピクセ ル単位でのタイトルバーの高さを設定します。デフォル ト は Centered で WindowFont の 高 さ です。 WindowFont コマンドは、指定されたフォントに対す る デ フォ ル ト に高さをリセットするので、パラメータ height はこのコマンドの後でセットする必要があり ま す。例:

     TitleStyle LeftJustified Height 24

TitleStyle [state] [style] [ -- [!]flag ... ]

これは、タイトルバーのスタイルを設定します。 state は、"ActiveUp", "ActiveDown", "Inactive" のいず れ か です。 state が省略された場合、そのスタイルはす べての状態 (state) に対して追加されます。スタイ ル とフラグをカッコで囲めば、複数の状態に対する定義を 1 行で指定することができます。 style は省略する こ とができ、それにより現在のスタイルを破壊せずにフラ グのみ設定することができます。

"!" が任意の flag の前に置かれた場合、その振舞いは 否 定 さ れ ま す。 各状態に対する利用可能なフラグ に、"Raised", "Flat", "Sunk" (これらは互いに 排 他 的) が あ ります。デフォルトは Raised です。状態 ActiveDown に関しては、ButtonStyle の項目の中の 注 意を参照してください。例:

     TitleStyle ActiveUp HGradient 16 navy black
     TitleStyle ActiveDown (Solid red -- flat) Inactive (TiledPixmap wood.xpm)
     TitleStyle ActiveUp (-- Flat) ActiveDown (-- Raised) Inactive (-- Flat)

こ れは、ActiveUp の状態に水平方向のグラデーション を設定し、 ActiveDown の状態にべったりした赤を、そ して Inactive の状態にタイル張りの木目 (wood) のピ クスマップ画像を設定します。そして最後に ActiveUp は平らな見た目に設定され、 ActiveDown は沈みこんだ ものに設定され (Raised のフラグは ActiveDown 状 態 に対しては、レリーフの逆転の仕様により、沈みこんだ 形 (Sunk) になります)、 Inactive は平らに設定さ れ ます。すべての状態にフラグを設定する例:

     TitleStyle -- flat

平らな見た目を設定するには:

     TitleStyle -- flat
     ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)

UpdateDecor decor

こ れはウィンドウの装飾を更新します。 decor はオプ ション引数で、これには更新する装飾を指定します。そ れ が指定された場合、その特定の decor に結びつけら れたウィンドウのみが更新されます。このコマンドは、 例えば、ButtonStyle, TitleStyle, BorderStyle (多分 AddToDecor との組み合わせで使用されます) の後で 有 用でしょう。無効な装飾を指定すると、結果としてすべ てのウィンドウが更新されます。こ の コ マ ン ド は Recapture ほどはかき乱しませんが、 Recapture ほど にはウィンドウスタイルオプションに影響を与え ま せ ん。

WarpToWindow x y

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

Wait name

こ の組込み関数は、fvwm 関数内でのみ使われることを 意図しています。これは関数の実行を、name という 名 前 の 新 し いウィンドウが現われるまで一時停止しま す。fvwm はその停止の間完全に機能し続けます。こ れ は、特に 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 に移します。

WindowsDesk arg1 [arg2]

これは、選択したウィンドウを他のデスクトップ (作業 空間、部屋) に移動します。

arg1 が 0 でなければ、次のデスクトップ番号は、現在 のデスクトップ番号 + arg1 になります。デスクトップ 番号は負も使えます。

arg1 が 0 ならば、新しいデスクトップ番号は arg2 に なります。

一つの引数だけが与えられた場合、これは選択したウィ ンドウを arg1 に移動します。

WindowFont fontname

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

WindowId id func

WindowId 関数は、指定したウィンドウ id を探して そ の 上で指定した func (関数)を実行する以外は、 Next や Prev 関数と同じです。

     WindowId 0x34567890 Raise
     WindowId 0x34567890 WarpToWindow 50 50

これは、主に WindowList 組込み関数で使用される関数 で有用です。

WindowList [options]

これは、現在のデスクトップの個々のウィンドウのタイ トルや位置情報が表示されるポップアップメニューを生 成 (そしてそれをポップアップ) します。アイコン化さ れたウィンドウの位置情報はカッコ内に表示されます。 そのウィンドウの一覧のポップアップメニューから一つ の項目を選択すると、デフォルトでは、$0 として渡 さ れるウィンドウのウィンドウ ID を与えてそれを解釈す る関数 WindowListFunc を実行させます。デフォルトで は WindowListFunc は以下のようになっています:

     AddToFunc WindowListFunc "I" WindowId $0 Iconify -1
     +                        "I" WindowId $0 Focus
     +                        "I" WindowId $0 Raise
     +                        "I" WindowId $0 WarpToWindow 5p 5p

こ れ ら の デ フォ ル ト が 気 に い ら な け れ ば、WindowListFunc 組込み関数を破壊し、自分で作 る ことができます。

WindowList に 渡 さ れ る オ プション options は "NoGeometry", "Function <funcname>", "Desk <desknum>", "CurrentDesk", "NoIcons", "Icons", "OnlyIcons", "NoNormal", "Normal", "OnlyNormal", "NoSticky", "Sticky", "OnlySticky", "NoOnTop", "OnTop", "OnlyOnTop", "Unsorted", "UseIconName", "Alphabetic", "NotAlphabetic" です。

( 注 意: Normal は、NoIcons かつ Sticky かつ OnTop を意味します)

ある関数を "Function <funname>" で渡す場合、$0 は ウィンドウ ID です:

     AddToFunc IFunc "I" WindowId $0 Iconify
     WindowList Function IFunc, NoSticky, CurrentDesk, NoIcons

WindowList をアイコンマネージャとして使うには、以 下のようにすれいいでしょう:

     WindowList OnlyIcons, Sticky, OnTop, Geometry

(注意: オプション "Only" は、他のものすべてを一 掃 します)

WindowShade [ opt ]

これは、タイトルのついたウィンドウに対するウィンド ウの日陰機能を On/Off します。日陰状態にあるウィン ド ウは、タイトルバーのみが表示されます。 opt が与 えないとウィンドウの日陰機能が On/Off され ま す。 opt が 1 の場合は、そのウィンドウは強制的に日陰状 態にされます。 opt が 2 の場合は、そのウィンドウは 強制的に日向状態にされます。最大化されたウィンドウ とタイトルのないウィンドウは日陰状態にはでき ま せ ん。

XORvalue number

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

+

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

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

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

設定例の提供

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

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

コマンドライン引数 -s を指定しないと、fvwm は自動的に指 定 さ れたディスプレイの全てのスクリーン上で起動します。 fvwm が起動した後では個々のスクリーンは独立したものとして 扱 わ れ、 fvwm の再起動も、各スクリーンで別々に行わなくてはなり ません。マルチスクリーンディスプレイでは、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 のリストに書かれています。

バグリポートは FVWM メーリングリストに送ることができ ま す (FAQ を参照)。

著者

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