10.2. より高度なテーマ編集

このセクションの大半は Fluxbox 0.1.13 の man ページからもってきた、あるいは多大な影響を受けています。 通常この種の事柄の決定的な権威は man ページですが、 この文書はスタイル作成をはじめたばかりの人をもっと[強く]啓蒙するようなものとなっています。

スタイルの仕組がどう機能するかを理解するには、少し X11 のリソースの機能について知ってみるのがいいです。

X11 リソースはキーと値で構成されています。 キーはピリオド (.) で区切られたいくつかのより小さなキー (ときどき子として参照されます) で構成されています。 キーには、 ワイルドカードの役目を果たすアスタリスク (*) を含めることもでき、その場合その一行でいくつかのキーにマッチすることを意味しています。 これは一、二色をベースとするスタイルで便利です。

Fluxbox では、 ツールバー、メニュー、ウィンドウ装飾の三つの主要コンポーネントを調整できます。 slit は自動的にツールバーからスタイルを継承しますが、 必要なら別にスタイルを指定することもできます。 ウィンドウをドラッグする際に x-y 位置に表示される小ウィンドウは、 そのスタイルをウィンドウタイトルバーから借ります。

以下は基本構文を説明するためのいくつかの簡単な例です:

例 10.1. ツールバーの時計のスタイル

    toolbar.clock.color:  green

ツールバーの時計の色リソースをgreen に設定します。 別の例:

例 10.2. メニュースタイル

    menu*color: rgb:3/4/5

メニューとそのすべての子の色リソースを rgb:3/4/5 に設定しています。色名の説明は X11 man ページを参照して下さい。 これは menu.title.colormenu.frame.color にも適用されます。 そして次の例:

例 10.3. フォントスタイル

    *font: -b&h-lucida-medium-r-normal-*-*-140-*

すべてのキーのフォントリソースを一度にこのフォント名に設定しています。 システムにインストールされたフォントの情報については xfontsel, gfontsel あるいは xlsfonts のようなプログラムを使うことができます。

Fluxbox をこんなに華やかにしているのは、 テクスチャを動的に描画する能力です。 テクスチャの記述は直接キーに指定され適用されるはずです。 例えば、

例 10.4. テクスチャスタイル

    toolbar.clock:   Raised Gradient Diagonal Bevel1
    toolbar.clock.color: rgb:8/6/4
    toolbar.clock.colorTo: rgb:4/3/2

心配しないで、これらのディレクティブがどう機能するかについては[きちんと]説明します。 テクスチャの記述は次のように最大五つのフィールドからなります:

表 10.1. テクスチャディレクティブ

ディレクティブ説明
Flat / Raised / Sunken / Tiledflat, raised あるいは sunken の外観をコンポーネントに与えます。 Tiled は pixmap だけに作用し、スケールしません。
Gradient / Solid単色かグラデーションテクスチャを描画します
Horizontal / Vertical / Diagonal / Crossdiagonal / Pipecross / Elliptic / Rectangle / Pyramidこれらテクスチャタイプの内から一つ選択します。 これらも Gradient が指定されているときだけ機能します。
Interlacedテクスチャを織り混ぜ(一行毎に暗くする)ます。 このオプションはグラデーションテクスチャでもっともよく使われていますが、 Blackbox 0.60.3 (そしてすなわちすべてのバージョンの Fluxbox) から solid テクスチャでも使えるようになっています。
Bevel1 / Bevel2使用する bevel (面取り) の種類。bevel1 はデフォルトの設定で、陰影は画像の端につきます。 bevel2 はその代替で、陰影は画像の端から 1 pixel 分内側につきます。

テクスチャ記述からは離れますが、オプション ParentRelative もまた利用でき、コンポーネントをその親の一部として見せることができます。

すべてのグラデーションテクスチャは colorcolorTo リソースの二色の組み合わせからなります。 Solid モードで interlace を使っているなら、その interlace 色をみつけるのに colorTo リソースが使われます。

完全なコンポーネントとそれぞれについて指定可能な値のリストは 付録 C. テーマリファンレンス にあります。

リストは長大ですが、独自のスタイルをつくるなら、 多数のキーを一つのコマンドで簡単に設定できることを覚えておいて下さい。 例えば次のように。

例 10.5. 典型的な簡略スタイル

    *color:             slategrey
    *colorTo:           darkslategrey
    *unfocus.color:     darkslategrey
    *unfocus.colorTo:   black
    *textColor:         white
    *unfocus.textColor: lightgrey
    *font:              lucidasans-10