[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
テーマとフレームスタイルは今のところほとんど同じものですが、ちょっとだけ 違うのはテーマは必要なときにシステムから読み込む仕組を提供していることで す。後のバージョンではテーマが他のユーザーインターフェースでの設定法を含 むこともあるでしょうが、今のところその見込みはないでしょう。
フレームスタイルが必要なとき、もしまだ利用可能でない(すなわち、そのスタ
イルについて add-frame-style
関数が呼ばれていない)ならば、ウィン
ドウマネージャがシステムから同名のテーマを読み込もうとします。
各テーマはディレクトリに保存され、このディレクトリはテーマ自身と同名でな
ければいけません。このディレクトリ内には `theme.jl' か
`theme.jlc' という名前の Lisp スクリプトファイルがなければいけませ
ん。このスクリプトは評価可能で、同名のテーマのフレームスタイルを
(add-frame-style
の呼出しにより)提供するべきです。
そのテーマスクリプトが評価されている間に image-load-path
変数には
そのテーマディレクトリが最初の項目として含むように設定されます。これでディ
レクトリ内に保存されているどの画像ファイルも make-image
関数を使っ
て確実に読み込まれるようになります。
rep はモジュールシステムを持たないのでテーマ内で定義されるどの変数もそれ
らのユニーク性を確実にするためにテーマの名前の接頭辞をつけなければなりま
せん。例えばテーマ foo
においては変数 bar
は実際には
foo:bar
と呼ばれます。
けれどもたいていはグローバルな変数か関数の宣言を避けるために rep の構文
スコープを使うことができます。ただ唯一、defcustom
によってカスタ
マイズオプションを定義するときだけは普通は例外となります。これらはグロー
バルに見えなければなりせん。
テーマは一般にはとてもむとんちゃくにとらえられているので sawfish はすべ
てのテーマのコードをとても制限された環境内で評価します。アイデアはテーマ
がウィンドウマネージャの外観だけに影響を及ぼすようにすることです。このこ
とにも関わらず、なおも悪意のあるテーマによってウィンドウマネージャがロッ
クされ、クラッシュする可能性があります。最初の場合については
SIGINT
シグナルを送ることでロックしないようにします。たぶんテーマ
はユーザ環境に影響を与えることはできませんが、保証はありません ...