User Commands FvwmButtons(1) 名前 FvwmButtons - FVWM ボタンボックスモジュール 形式 FvwmButtons は fvwm によって実行されるので、コマンドラインか らの呼び出しでは動作しません。 説明 FvwmButton モジュールは、X の端末のルートウィンドウ上に居 座 る複数のボタンからなるウィンドウを提供します。ユーザは、いつ でもそのボタンを押して、そのボタンにユーザがあらかじめ指定し たコマンドをウィンドウマネージャから呼び出すことができます。 FvwmButtons は fvwm がウィンドウマネージャとして使われている ときに動作するのみです。 ボタンボックスは、任意の設定、および任意の位置にできますし、 呼 び 出される動作を表示するアイコンの色は白黒もカラーも可で す。 初期化 初期化の間、FvwmButtons は、ボタンボックス位置情報と色、アイ コン、動作を記述している設定ファイルを検索します。このファイ ルの書式は後で説明します。設定ファイルは、fvwm がその初期 化 のときに使用するものです。 いくつかの異なる設定で FvwmButtons を使うに は、 FvwmButtons をオプションパラメータ付きで呼びだすと、その代わりの名前で使 うようになります (例えば "Module FvwmButtons SomeButtons")。 こ の場合 SomeButtons は、設定ファイルの "*SomeButtons" から 始まる行のみを読み、FvwmButtons に対する行を読みません。 ファイル名の 2 つ目の引数を与えることで、デフォルト の fvwm 設定ファイルの代わりに追加の設定ファイルを指定することもでき ます。これは、"*FvwmButtonsFile" の設定を上書きします。以 下 を参照してください。 呼び出し FvwmButtons は .fvwmrc ファイルに 'Module FvwmButtons' と い う行を入れることで呼びだせます。FvwmButtons を fvwm の初期化 の際に起動する場合は、これは InitFunction 内に置くべき で す が、あるいはそれを後で呼び出すためにメニューやマウスボタン、 キーストロークなどに割り当てることも可能です。fvwm は設定 オ プ ショ ン の ModulePath で 指定されたディレクトリを探して FvwmButtons をみつけようとします。 設定オプション FvwmButtons は .fvwmrc ファイルの以下のオプションを認識し ま す: SunOS 5.9 Last change: Mar 9 1996 1 User Commands FvwmButtons(1) *FvwmButtonsBack color これは、ボタンの背景色を指定します。浮き彫りと影の色 も これから計算されます。 *FvwmButtonsColumns columns これは、生成するボタンの列の数を指定します。指 定 し な かっ た場合、列の数は要求されたボタンの数を行の数で割っ た数が設定されます。行と列の両方が設定されて、それに 足 り る数のボタンを指定しなかった場合、列の指定は無視され ます。 *FvwmButtonsFile filename これは、このボタンに対する設定がファイル filename に 書 か れていることを意味します。この filename はフルパス名 で与えるか、または fvwm の起動ディレクトリになければ い けません。設定ファイルは、fvwm の設定ファイルとほぼ同じ 書式ですが、各行には "*FvwmButtons" という接頭辞がが つ い ているものとして読まれます。"#" で始まる行はコメント と見なされ、行末の "\" はその行が継続することを意味しま す。 *FvwmButtonsFont font これには、ボタンのラベルに使われるフォントを指 定 す る か、または None を指定します。 *FvwmButtonsFore color これは、ボタンのラベル文字列と、白黒アイコンで使われ る 色を指定します。 *FvwmButtonsFrame width これは、各ボタンの周りの浮き彫りの幅を指定します。こ れ を 負の値にすると、その浮き彫りはいつでも普通の浮き彫り の逆になります。その結果、沈み込んだボタンが得られ、 そ れはアクティブのときに浮かび上がることになります。 *FvwmButtonsGeometry geometry これは、FvwmButtons のウィンドウの位置を指定します。 サ イ ズは指定の必要はなく、FvwmButtons は自動的に、すべて のボタンを綺麗に収納するようなサイズを自動的に選択し ま す。 geometry は、標準的な X11 ウィンドウの geometry 指 定と同じです。 *FvwmButtonsPadding width height ボタンの浮き彫りとボタンの内容部分との間の空白は、通 常 は 左右は 2 ピクセル、上下は 4 ピクセルですが、取り込ま れた (swallow) ウィンドウとコンテナ (container) は 別 で、 これらは特に命令が指定されていなければ空白は何も入 りません。この設定は、デフォルトの水平方向の空白のサ イ ズを width ピクセルに、垂直方向を height ピクセルに指定 します。 *FvwmButtonsPixmap pixmapfile SunOS 5.9 Last change: Mar 9 1996 2 User Commands FvwmButtons(1) これは、背景に使われるピクスマップ画像を指定します。 透 明な背景にしたい場合は "none" と指定してください。 *FvwmButtonsRows rows これは、生成するボタンの行の数を指定します。指 定 し な かった場合は、2 行を使います。 *FvwmButtons(options) [title icon command] これは、ボタンボックス内のボタンの内容を指定します。 以 下の options をコンマ、あるいは空白区切りでボタンに与え られます: widthxheight ボタンは、通常のボタンの横幅の width 倍に、通常の縦幅の height 倍になります。 Action [(options)] command これは、ボタンが、return キーかマウスボタンを押されてア ク ティブになったときに実行される fvwm コマンド command を指定します。command が空白を含む場合は、それらを引 用 符で囲まなければなりません。現在のオプション: Mouse n - この動作 (action) はマウスボタンが n のときの み 実行されます。一般的な動作に加えて、各マウスボタンに 一つの動作を定義できます。 Back color これは、このボックスを描画するのに使用する背景色を指 定 します。浮き彫りと影の色もこれから計算されます。 Container [(options)] これは、このボタンがボタンボックスのミニチュアを含む こ とを意味しますが、これはほぼ他の FvwmButtons モジュール を取り込む (swallow) ことと同等です。options は、一つの ボ タンに与えるものと同じですが、それらはここに含まれる すべてのボタンに影響します。この使用に対して有効なオ プ ショ ン は Back, Font, Fore, Frame, Padding です。Title と Swallow オプションに対するフラグは、Title(フ ラ グ ) and Swallow( フ ラ グ ) の形でセットできます。あなたは "Columns width" か "Rows height" のどちらかも指定すべき で しょうが、そうでなければコンテナの内側にボタンを配置 する目的で "Rows 2" が仮定されます。例として、設定例 の 節を参照してください。 コンテナボタン自体 (内容とは分離して) は、Frame や Pad- ding のような書式のオプションを取り、それにコマンドを割 り当てることができます。これは、以下のようなコンテナ の 周りに微妙なレリーフを作れることを意味します: *FvwmButtons(2x2, Frame 5, Padding 2 2, Action Beep,\ Container(Frame 1)) SunOS 5.9 Last change: Mar 9 1996 3 User Commands FvwmButtons(1) 多分、少なくとも widthxheight のサイズ設定をコンテナ に 与えたいと思うでしょう。 End これは、現在のコンテナに対するこれ以上のボタン定義が な い こと、そしてこの後のボタンはコンテナの親に置かれるこ とを指定します。このオプションは、それ自身を一つの行 と して置くべき、すなわち以下のようにします: *FvwmButtons(End) Font fontname これは、このボタンのラベルにフォント fontname が使わ れ るようにします。 Fore color これは、このボタンのタイトルと白黒アイコンの色を指定 し ます。 Frame width ボタンの浮き彫りが width ピクセル幅になります。width を 負 の値にすると、その浮き彫りはいつでも普通の浮き彫りの 逆になります。その結果、沈み込んだボタンが得られ、そ れ はアクティブのときに浮かび上がることになります。 Icon filename これは、ボタン上に表示されるアイコンの X11 ビットマップ ファイル (xbm)、または XPM カラーアイコンファイルを指定 します。FvwmButtons は、アイコンファイルを見つ け る の に、fvwm の設定項目である IconPath や PixmapPath で指定 されているパスを探します。 NoSize このオプションは、最初のボタンサイズの計算の際にこの ボ タ ンが何も考慮されないことを意味します。これは、一行の 中に入れておくには大きいピクセルサイズの組が得られて し ま うような特殊なボタンに有用で、これによってボタンボッ クス全体が膨らんでしまうことを避けることができます。 Padding width height ボタンの浮き彫りとボタンの内容部分との間の空白は、通 常 は 左右は 2 ピクセル、上下は 4 ピクセルですが、取り込ま れた (swallow) ウィンドウとコンテナ (container) は 別 で、これらはデフォルトでは空白は何も入りません。 このオプションは、水平方向の空白のサイズを width ピクセ ルに、垂直方向を height ピクセルに設定します。 Size width height これは、FvwmButtons がアイコンとタイトルのから計算す る サ イ ズ に は 無関係に、このボタンの内容部分が width x height ピクセルを要求することを指定します。取り込まれた SunOS 5.9 Last change: Mar 9 1996 4 User Commands FvwmButtons(1) (swallow) ウィンドウだけのボタンバーは、FvwmButtons が 取り込まれたボタンのサイズを考慮しないために、このオ プ ショ ンを指定しなければそれほど大きくはなりません。他の ボタンはボタンボックスにより大きいサイズを要求する可 能 性 がありますので、このオプションは、最小のスペースの保 証を与えるだけであることに注意してください。 Swallow [(flags)] hangon command これは、FvwmButtons に command を実行させ、hangon と い う 名前に一致するウィンドウが現れたときにこのボタンの中 にそのウィンドウを捕みとって取り込みます。例: *FvwmButtons(Swallow XClock 'Exec xclock &') これは、名前かクラス、またはリソースが "XClock" であ る 最 初のウィンドウを取り、それをボタンの中に表示します。 モジュールは、'Exec ほにゃら' の代わりにモジュールを 指 定することで取り込むことができます。例: *FvwmButtons(Swallow "FvwmPager" "FvwmPager 0 0") Swallow には以下の flags を指定できます: NoClose / Close - これは、このボタンの中に取り込まれ た プ ログラムが、FvwmButtons がきれいに終了したときに開放 されるか、または閉じられるかどうかを指定します。 NoHints / Hints - これは、このボタンの中に取り込まれ た プ ログラムからのヒント情報を無視するかどうかを指定しま す。これはウィンドウ自身を、そのボタンに合うように強 制 的 にリサイズするのに便利です。デフォルトの値は "Hints" です。 NoKill / Kill - これは、取り込まれたプログラムを、 kill す ることで閉じるか、またはそのメッセージを送ることで閉 じるかを指定します。これは、ウィンドウマネージャプロ ト コ ルを受け付けないプログラムを終了するときに便利でしょ う。デフォルトの値は "NoKill" で す。 ま た、 こ れ は "NoClose" を指定した場合は意味を持ちません。 NoRespawn / Respawn - これは、取り込んだプログラムが 殺 さ れるときに、それを再び起動するかどうかを指定します。 "Respawn" が指定された場合、そのプログラムは元 の com- mand によって起動されます。そのプログラムが死ぬことには とても合理的な理由がある場合もありますので、こ の オ プ ションは注意して使ってください。 NoOld / UseOld - これは、名前 hangon に一致する既に存在 するウィンドウを、それ自身を command で起動する前に取り 込もうとするかどうかを指定します。デフォ ル ト の 値 は "NoOld" です。"UseOld" は、"NoKill" と組み合わせて使用 することで、そのウィンドウをウィンドウマネージャの再 起 SunOS 5.9 Last change: Mar 9 1996 5 User Commands FvwmButtons(1) 動 (restart) を切り抜けて生き残るようにできます。 *FvwmButtons(Swallow (UseOld) "Console" Nop) それをあなた自身で起動できるようにしたい場合、それを 一 つの Action と組み合わせてください: *FvwmButtons(Swallow (UseOld) "Console" Nop, \ Action `Exec "Console" console &`) NoTitle / UseTitle - これは、ボタンのタイトルを取り込ん だ ウインドウのタイトルから取るか、そうしないかを指定し ます。"UseTitle" を指定した場合、ボタンのタイトルはウィ ン ド ウ の名前を反映して動的に変化します。デフォルトは "NoTitle" です。 Title [(options)] name これは、ボタンに書かれるタイトルを指定します。タイト ル を 引用符で囲むことで空白をタイトルに含ませることも可能 です。そのボタンに対するタイトルが長すぎる場合は、そ の 文 字列はそれが丁度合う長さになるまで一つずつ切りとられ ていきます。justify が "Right" の場合、文字列の先頭の方 が 削除されていき、そうでない場合は最後の方が切り取られ ます。Title には以下の options を指定できます: Center - タイトルは水平方向にセンタリングされます。これ はデフォルトです。 Left - タイトルは左端に合わせられます。 Right - タイトルは右端に合わせられます。 Side - これは、タイトルを表示位置を、デフォルトであるア イコンや取り込まれた (swallow) ウィンドウの下ではなくそ れらの右側にタイトルを表示するようにします。小さいア イ コ ン を 使う場合は、これと "Left" オプションを使うこと で、fvwm のメニューと同様の見た目を得ることができます。 Legacy fields [title icon command] このフィールドは以前の版の FvwmButtons との互換性を維持 するもので、使用は勧められません。フィールド title は、 オプション Title name と同等です。title フィー ル ド が "-" の場合は、タイトルは何も表示されません。フィールド icon は、オプション Icon icon と同等です。icon フィール ドが "-" の場合は、アイコンは何も表示されません。フィー ルド command は、オプション Action command、またはも う 一つ Swallow "hangon" command と同等です。 コマンド FvwmButtons は、任意の fvwm コマンドを認識します。こ れ に 関 するより詳しい情報は fvwm(1) を参照してください。 SunOS 5.9 Last change: Mar 9 1996 6 User Commands FvwmButtons(1) Exec コマンドを Actions で使う場合は、少し拡張されて い ます。書式は以下の通りです: Exec ["hangon"] command FvwmButtons がそのような Exec コマンドを見つけると、 コ マ ンドの引用符で囲まれた部分が、その名前やクラスに一致 するようなウィンドウに出会うまで、そのボタンは、押さ れ た ままになります。これは、ユーザが要求した動作がこれか ら実行されるんだということを見た目の反応としてユーザ に 提 供する、ということを目的としています。引用符で囲まれ た部分が空文字列である場合、ボタンはすぐに前に出てき ま す。 それが「押し込まれた」状態であっても、ユーザがボタ ンを押し続けることでそのコマンドを再度実行できること に 注意してください。 引用符 空白を含む文字列は、必ず引用符で囲む必要があります。 そ れ は、 コマンドでも同じです。以下の 3 種類の引用符文字 は、引用符として使えます; 単一引用符: 'これは "引用" です', 二重引用符: "これは別の '引用' です" 逆引用符: `これは変わった引用かな` 逆引用符は、以下のように FvwmCpp のようなプリプロセッサ を 使ってそこにあなたのコマンドを挿入させたいような目的 のためのものです: #define BG gray60 *FvwmButtons(Swallow "xload" `Exec xload -bg BG &`) 配置アルゴリズム FvwmButtons は、コンテナがある場合はボタンボックス自体を含む 各コンテナに対して再帰的に、以下のアルゴリズムを用いてそれら のボタンをできるだけ最良の配置にしようとします。 サイズを正しく取得 最初に、それが必要とするボタン単位面積での総数を、各 ボ タ ンのボタン単位の横幅と高さの積を加えていくことで計算 します。コンテナは、とりあえず標準的なボタン一つと考 え ます。それから、引数 rows と columns の値を考慮します。 行 (rows) の数が与えられている場合、列 (columns) はどれ だ け必要かを考え、columns の値がその必要な数より大きく ない場合でもそれを使いますので、その場合はボタンボッ ク SunOS 5.9 Last change: Mar 9 1996 7 User Commands FvwmButtons(1) ス の下にいくらか空のスペースができることになります。列 の数が与えられている場合、すべてのボタンが丁度合うの に ど れくらいの行の数が必要かを計算します。どちらも与えな い場合、行数は 2 と仮定され、列の数はボタンの面積数から 計算されます。 ボタンのシャッフル さて、これでボタンをその中に配置するのに十分な領域が 得 ら れることになりますので、残っているのは、これらを正し く配置することです。そのアルゴリズムは、ボタンがすべ て 単 位サイズであると仮定し、それらを左から右に、上から下 へと西洋風の方式で配置していきます。まずボタン 1 を 見 て、 このボタンは標準よりも大きいかと考えます。そうでな ければ、その次のボタンに対しても同じことを行います。1x1 よ りも大きいボタンがみつかった場合、それにスペースを用 意しないといけません。このアルゴリズムは、それが正し い 座 標 で あると仮定し、その左上の角を変更しません。そし て、このボタンが必要とする場所に重なるボタンを "スラ イ ド " させます。そのボタンは右にスライドし、右端のものは 次の行へ折り返します。このボタンに対するすべてのス ペー ス が綺麗になったときに、このアルゴリズムは次のボタンに 対する処理に移り、同じことを行います。 コンテナ コンテナは同じアルゴリズムで配置され、実際にそれらは そ れ ら を 見つけたアルゴリズムで再帰的にシャッフルされま す。 明確にする例 ここの例は有用だと思います: 6 つのボタンがあると し、 2 番は 2x2 のサイズで、それ以外はすべて単位サイズであると します。この場合、全体のボタン面積数は 1 が 5 つ、4 が 1 つ で合計 9 となります。ここで、3 列を指定したとしま す。 1) +---+---+---+ 2) +---+---+---+ 3) +---+---+---+ | 1 | 2 | 3 | | 1 | 2 | | | 1 | 2 | | +---+---+---+ +---+---+---+ +---+---+---+ | 4 | 5 | 6 | | 3 | 4 | 5 | | 3 | | 4 | +---+---+---+ +---+---+---+ +---+---+---+ | | | 6 | | | 5 | 6 | | +-----------+ +---+-------+ +---+---+---+ 4) +---+---+---+ 5) +---+-------+ | 1 | 2 | | | 1 | | +---+---+---+ +---+ 2 | | 3 | | | | 3 | | +---+---+---+ +---+---+---+ | 4 | 5 | 6 | | 4 | 5 | 6 | +---+---+---+ +---+---+---+ このアルゴリズムは、図 1 で開始されます。最初の大きなボ SunOS 5.9 Last change: Mar 9 1996 8 User Commands FvwmButtons(1) タンを 2 番のボタンと見つけ、そしてそのボタンが占有する 部分の単位領域を、それぞれ左から右へ、上から下へとい う 順 に 開放しようとします。最初に、ボタン 3 にこれを適用 し、全体をずらして図 2 のようにします。次は、ボタ ン 4 に これを適用し、4 から 6 までのボタンを 1 度ずつずらし ていって結局図 4 のようになります。これで、ボタン 2 の 要求するすべての単位領域が開放され、ボタン 2 の実際のサ イズが得られることになります。 ボタンのサイズはどうなるか ? FvwmButtons が設定で要求されているアイコンとフォント を 読んだときに、取り込んだ (swallow) のでないすべてのボタ ンが必要とするサイズを見い出すことができます。コンテ ナ の 単位ボタンサイズは、無理矢理詰め込まなくても最も大き いボタンがその中に入るように十分大きく設定されます。 取 り 込んだウィンドウには、この仕組みから得られるボタンサ イズでゆったりとできることを単純に期待します。取り込 ん だ あるウィンドウに対して、より大きなスペースを要求する 特定の設定が必要な場合、それはボタンの設定行でオプ ショ ン "Size width height" を使うことで設定できます。これ は、このボタンの浮き彫りや空白の内側に少なくとも width x height ピクセルを与えるよう FvwmButtons に伝えます。 設定例 以下の例は、.fvwmrc ファイルから FvwmButtons の初期化コマ ン ドを記述する部分を抜き出したものです: ########################################################## # fvwm の初期化の際に起動されるべき任意のモジュールをロード ModulePath /usr/lib/X11/fvwm:/usr/bin/X11 # FvwmButtons がまちがいなく常にあるようにする AddToFunc InitFunction "I" Module FvwmButtons AddToFunc RestartFunction "I" Module FvwmButtons # それをタイトルバーなし、sticky とし、アイコンを指定 Style "FvwmButtons" Icon toolbox.xpm, NoTitle, Sticky ########################################################## *FvwmButtonsFore Black *FvwmButtonsBack rgb:90/80/90 *FvwmButtonsGeometry -135-5 *FvwmButtonsRows 1 *FvwmButtonsFont -*-helvetica-medium-r-*-*-12-* *FvwmButtonsPadding 2 2 *FvwmButtons(Title Resize,Icon resize.xpm ,Action Resize) *FvwmButtons(Title Move ,Icon arrows2.xpm,Action Move ) SunOS 5.9 Last change: Mar 9 1996 9 User Commands FvwmButtons(1) *FvwmButtons(Title Lower ,Icon Down ,Action Lower ) *FvwmButtons(Title Raise ,Icon Up ,Action Raise ) *FvwmButtons(Title Kill ,Icon bomb.xpm ,Action Destroy) *FvwmButtons(1x1,Container(Rows 3,Frame 1)) *FvwmButtons(Title Dopey ,Action \ `Exec "big_win" xterm -T big_win -geometry 80x50 &`) *FvwmButtons(Title Snoopy, Font fixed, Action \ `Exec "small_win" xterm -T small_win &`) *FvwmButtons(Title Smokin') *FvwmButtons(End) *FvwmButtons(Title Xcalc, Icon rcalc.xpm,\ Action `Exec "Calculator" xcalc &`) *FvwmButtons(Title XMag, Icon magnifying_glass2.xpm,\ Action `Exec "xmag" xmag &`) *FvwmButtons(Title Mail, Icon mail2.xpm,\ Action `Exec "xmh" xmh &`) *FvwmButtons(4x1, Swallow "FvwmPager" `FvwmPager 0 3`\ Frame 3) *FvwmButtons(Swallow(UseOld,NoKill) "xload15" `Exec xload\ -title xload15 -nolabel -bg rgb:90/80/90 -update 15 &`) 最後から一つ前の行はやや巧妙で、これは、FvwmPager モジュール を 起 動 し、それを 4 倍幅のボタンの表示として取り込みます。 ページャはボタンの浮き彫りの内側でできるだけ大きくなります。 最後の行はさらに奇妙で、UseOld とNoKill の組合せになっている こ とに注意してください。これは、起動時に "xload15" という名 前の既に存在しているウィンドウを取り込もうとし (失敗すれば指 定されたコマンドを実行します)、これは FvwmButtons が終了する ときに開放されます。 色の指定 rgb:90/80/90 は、実際には X の独立した色指定の最 も 正 しい方法で、古い形式 #908090 に代えて使うべきです。後者の 指定を設定ファイル内で使った場合、実行される command の中 の 色 の ハッ シュマーク (#) を (バックスラッシュで) 確実にエス ケープしないと、fvwm はその行の残りをコメントとして見なし て しまいます。 COPYRIGHTS (原文) The FvwmButtons program, and the concept for interfacing this module to the Window Manager, are all original work by Robert Nation Copyright 1993, Robert Nation. No guarantees or warranties or anything are provided or implied in any way whatsoever. Use this program at your own risk. Permission to use this program for any purpose is given, as long as the copyright SunOS 5.9 Last change: Mar 9 1996 10 User Commands FvwmButtons(1) is kept intact. Further modifications and patching by Jarl Totland, copy- right 1996. The statement above still applies. 著作権 (日本語訳) FvwmButtons プログラムと、ウィンドウマネージャとこのモジュー ル の相互のやりとりに関する概念は、すべて Robert Nation のオ リジナルな仕事によるものです。 1993 年の Robert Nation による著作物です。いかなる保険も、い かなる保証も、そしてそれ以外の何ものも、全くどんな方法でも与 えられませんし暗示もしません。このプログラムはあなた自身の責 任で使用してください。このプログラムは、この著作権がこのまま 保持されている間はどんな目的であってもその使用が許可さ れ ま す。 さらなる修正とパッチが 1996 年 Jarl Totland による著作物とし て与えられました。上の記述はこちらにも適用されます。 作者 Robert Nation. Jarl Totland によるいくらかの拡張。 SunOS 5.9 Last change: Mar 9 1996 11