[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
sawfish の目標の中の一つが可能な限り多くの柔軟性を提供することですが、こ れはときどきすべてのことについて有害となる可能性があります。例えばすべて のテーマが概念的に似たウィンドウフレームパーツについて一貫したキーマップ とカーソル画像を使うことでよりユーザに優しくなります。すなわち、すべての 閉ボタンが同じマウスボタンバインディングを持ち、ポインタがそれらの上に来 たときに同じマウスカーソルを表示する方がいいでしょう。
これを達成するために sawfish はそれぞれいくつかのデフォルトの属性を持つ フレームパーツの クラス 群を定義しています。ウィンドウフレームを定 義する際に各パーツの定義はそれがメンバとなるクラスを指定し、そしてデフォ ルトの属性(これらの属性に対する特定の値は暗黙に指定されます)を継承します。
あらかじめ定義されたクラスは次のとおりで、それらの意味は自身が説明してい ます:
title
, menu-button
, close-button
,
iconify-button
, maximize-button
, top-border
,
left-border
, right-border
, bottom-border
,
top-left-corner
, top-right-corner
,
bottom-left-corner
, bottom-right-corner
.
frame-part-classes
frame-part-classes
に追加することで別の
クラスを生成できます。けれどもおそらく一つ以上のテーマがその同じクラスを
必要とし、そしてユーザは使われているキーマップをカスタマイズしたいと思う
かもしれません。def-frame-class
マクロはこのような状況に対応し、
新しいクラスを追加するのに使われます。
ALIST-FORM はクラスに対する属性を定義する関連リストを与えるために 評価されます。キーについて既存の値が存在しないときだけ、各キー値の組が設 定されます。
もし binding-forms が与えられるとそれらはクラスについて既存のキー マップがないときだけ評価されます。キーマップが生成され `class-name' という名前の変数に保持されます。そしてこの変数は binding-forms 内で使われます。
そして仮想の shade-button
クラスを定義するには次が使えます:
(def-frame-class shade-button '((cursor . left_ptr)) (bind-keys shade-button-keymap "Button1-Off" 'toggle-window-shaded)) |
いくつかのケースではあらかじめ定義されたフレームパーツプロパティを上書き できる変数になるかもしれません。例えば、ウィンドウタイトルバー上のテキス トがいつも青くなるような、設定などです。
frame-part-classes
に似ていますがプロパティがその変数とフレームス
タイル自身の両方で定義される値よりも優先されます。
次の関数はこれら二つの変数のカスタマイズを単純にするのに使えます:
もし override が nil でなければ設定は
override-frame-part-classes
変数にインストールされ、そうでなけれ
ばframe-part-classes
変数に保持されます。
次の例はすべてのタイトルバーの色を上書きしています:
(set-frame-part-value 'title 'background '("black" "white" "green" "blue") t) |
(実際にここで何が設定されるかの詳細については次の節を参照して下さい)