Blackbox はコードの最初の行を書いたときからミニマリズムを前提に発展してき ました。アイキャンディになることも多機能になることも、あるいは広く絶賛さ れている NeXT のインタフェースのためにもっとも Adorned (美しく装飾された) ものになることもないということを意味しています。単に 動作が速いこと を目指しています。
Blackbox は、カスタマイズ可能なウィンドウ装飾、アプリケーションを起動する ためのルートメニュー、そのときのワークスペース名、フォーカスされている アプリケーション名、時刻を表示するツールバーの機能を持っています。 またワークスペースを追加、消去するためのワークスペースメニューもあります。 `スリット' は小さなアプリケーションを収納することができて、例えば bbtools はこのスリットの機能を利用しています。
アイコンについては Blackbox は特殊な方法をとっています。ウィンドウを最小化 してもアイコンはどこにも現れません。その代わり、最小化されたアプリケーション はすべて ワークスペースメニューの`アイコン'サブメニューで見ることができます。 もうあなたのデスクトップがアイコンでごっちゃになることもありません! アイコン の代わりにはウィンドウシェード機能も使えます。ウィンドウのタイトルバーで ダブルクリックすると、ウィンドウがシェード(折畳める)します (ウィンドウが 消えて、タイトルバーだけが表示されるようになります)。
Blackbox は画像をその場で描画するための独自の画像クラスを使っています。 スタイルファイルを使うと、デスクトップの外観を大幅に変えることができます。 Blackbox は現在のところはページャなどの他のクライアントとの通信に独自の プロトコルを用いていますが、GNOME や KDE で使われているような、新しい ウィンドウマネージャ仕様のサポートの作業も進行中です。
exec blackbox
をスクリプトの最後で実行されるように追加します。 なおこのとき Blackbox が終了すると X のセッションも終了します。
Blackbox は起動するとまず標準のメニューファイルを /usr/share/blackbox/menu について検索します。ここでシステム共通のメニューをユーザに 対して提供することができます。
終了または再起動時には Blackbox はユーザ標準設定をユーザのホーム ディレクトリ内のファイル ~/.blackboxrc に保存します。 このファイルのいくつかの項目は手で編集することができます。
ワークスペースメニュー内のアプリケーション名の上で左クリック(第一ボタン) すると、そのワークスペースに移動し、そのアプリケーションのウィンドウを 前面に出し/フォーカスします。中央クリック(第二ボタン)すると、その アプリケーションを現在のワークスペースに移動します。
このメニューを使うと、現在のワークスペースの名前を入力し、設定することが できます (入力し終ったら、Enter を押せば確定します)。 またツールバーの位置、常に最前面に表示するかどうか、そしてマウス カーソルをよけると自動的に隠すようにするかどうかを選択することが できます。
注意: Blackbox バージョン 0.60.0 ではツールバー上で右クリックすると すぐにワークスペース名の編集モードに入るようになっていました。
ウィンドウのタイトルバーをダブルクリックすると、ウィンドウは シェードし(折畳まれ)、タイトルバーだけが表示されるようになります。 再度ダブルクリックすれば元に戻ります。
session.menuFile: ~/.blackbox/menu
というリソース値指定を追加(変更)します。 この変更を適用するには、Blackbox は再起動する必要があります。 メニューがきちんと利用可能であることを確認したら、Blackbox 標準の ルートメニューから`再起動'を選択します。
[タグ] (ラベルまたはファイル名) {コマンドまたはファイル名}
サポートされているタグは以下のとおりです:
[include] (~/blackbox/stylesmenu)
とすれば、 /home/bhughes/blackbox/stylesmenu がメニューに組込まれます。
`#'ではじまる行はコメントとして扱われ、無視されます。また、 ラベル/コマンド/ファイル名のフィールド内では次のようにして任意の 文字をエスケープできます:
[exec] (\(coolな\) \{XTERM\}) {xterm -T \"cool XTERM\"}
`\\'を使って、バックスラッシュリテラルをラベル/コマンド/ファイル名 フィールドに挿入することができます。
# Blackbox メニューファイル [begin] (Blackbox 0.76) [exec] (rxvt) {rxvt -ls} [exec] (Mozilla) {mozilla} [exec] (The GIMP) {gimp} [submenu] (Window Manager) [exec] (Edit Menus) {nedit .blackbox/Menu} [submenu] (Style) {Which Style?} [stylesdir] (~/.blackbox/styles) [stylesmenu] (Blackbox Styles) {/usr/share/blackbox/styles} [end] [config] (Config Options) [reconfig] (Reconfigure) [restart] (Restart) [end] [exit] (Log Out) [end] # end of menu file
Blackbox は標準インストール状態で既に、いくつかのスタイル指定ファイルが 利用できます。通常はこれらは /usr/share/blackbox/styles にインストールされています。 これらのファイルを見たり、編集することで、Blackbox のスタイルの仕組みが どうなっているのか理解できます。 メニューファイル内にメニューコマンド [style]、[stylesdir] そして [stylesmenu] を挿入すれば、スタイルをその場で選択、変更できるようになります。
また、ホームディレクトリに(通常は ~/.blackbox/styles という名前の)ディレクトリを作成し、独自のスタイルファイルをそこに置く こともできます。 もちろんこのディレクトリの名前は好きなものにできますが、多くの ダウンロード可能なテーマでは styles という名前(bb.themes.org での作法)に依っています。
スタイルの仕組みがどのように機能しているか理解するには、X のリソースが どのように機能しているかという知識が少し必要になります。
X のリソースはキーと値から構成されています。 キーはピリオド(`.')で区切られた、いくつかの小さなキー(ときどき`子'として 参照されます)の組み合わせからなります。 またキーには星印(`*')を複数のキーに合致するワイルドカードとして使うことも できます。これは単色あるいは二色を基本にしたスタイルの場合に便利です。
Blackbox では四つの主要コンポーネント - ツールバー、スリット、メニュー、 ウィンドウの(枠の)装飾 - をカスタマイズすることができます。
ウィンドウをドラッグする際にx-y座標を表示する小さなウィンドウについては、 ウィンドウのタイトルバーのスタイルを借ります。
いくつかの簡単な例です:
toolbar.clock.color: green
ツールバーの時計の色を`green(緑)'に設定しています。 もう一つの例:
menu*color: rgb:3/4/5
メニューと その`子'すべて について、色のリソースを`rgb:3/4/5'に設定しています (色名の説明については X(1) を参照して下さい)。 この設定には`子'も含まれているので menu.title.color と menu.frame.color にも適用されます。 さらに And with
*font: -b&h-lucida-medium-r-normal-*-*-140-*
とすると、このフォント名をすべてのキーのフォントリソースに、一度で 設定できます (プログラム xfontsel(1)、gtkfontsel、あるいは xlsfonts(1) を利用すれば、システムにインストールされているフォントの情報を 得ることができます)。
Blackbox にははテクスチャをその場で描画する機能があるのでちょっと 豪華に見えます。テクスチャの記述は上述の色の場合と似た方法で指定 します:
toolbar.clock: Raised Gradient Diagonal Bevel1 toolbar.clock.color: rgb:8/6/4 toolbar.clock.colorTo: rgb:4/3/2
難しそうだけど心配しないで ;-) すぐ説明します! テクスチャ記述は次の最大五つのフィールドからなります:
テクスチャ記述の代わりにオプション Instead of a texture description, the option ParentRelative も利用できます。これはそのコンポーネントを親の一部、つまり全体を透過的に 扱います。
すべてのグラデーションテキスチャは二つの色値、 All gradient textures are composed of two color values: the color と colorTo リソース から構成されています。color はグラデーションのはじめの色、colorToは 終わりの色を表しています。 もし Interlaced が Solid モードで利用されているなら colorTo リソースはインターレースの色を指定するのに利用します。
さて次は、完全なコンポーネントとそれらすべてのコンポーネントについて 指定可能な値のリストです。コンポーネントの先頭には、Blackbox の スタイルと X のリソースファイル両方で使われる、感嘆符(`!')ではじまる コメント行が書かれています。
! ツールバー自身 toolbar: テクスチャ toolbar.color: 色 toolbar.colorTo: 色 ! ツールバー上のボタン toolbar.button: テクスチャまたは ParentRelative toolbar.button.color: 色 toolbar.button.colorTo: 色 ! 矢印ボタンの色 toolbar.button.picColor: 色 ! 押下時のボタン toolbar.button.pressed: テクスチャ (例 Sunken) または ParentRelative toolbar.button.pressed.color: 色 toolbar.button.pressed.colorTo: 色 ! 押下時の矢印ボタンの色 toolbar.button.pressed.picColor:色 ! ツールバーのワークスペースラベル toolbar.label: テクスチャまたは ParentRelative toolbar.label.color: 色 toolbar.label.colorTo: 色 toolbar.label.textColor: 色 ! ツールバーのウィンドウラベル toolbar.windowLabel: テクスチャまたは ParentRelative toolbar.windowLabel.color: 色 toolbar.windowLabel.colorTo: 色 toolbar.windowLabel.textColor: 色 ! ツールバーの時計 toolbar.clock: テクスチャまたは ParentRelative toolbar.clock.color: 色 toolbar.clock.colorTo: 色 toolbar.clock.textColor: 色 ! ツールバーのテキストの位置 toolbar.justify: center、left、right のどれか ! すべてのツールバーコンポーネントに利用するフォント toolbar.font: フォント (例 -*-helvetica-medium-r-normal-*-*-100-*) ! メニュータイトルバー menu.title: テクスチャ menu.title.color: 色 menu.title.colorTo: 色 menu.title.textColor: 色 menu.title.font: フォント menu.title.justify: center、left、right のどれか ! メニュー枠 menu.frame: テクスチャ menu.frame.color: 色 menu.frame.colorTo: 色 menu.frame.textColor: 色 menu.frame.disableColor: 色 menu.frame.font: フォント menu.frame.justify: center、left、right のどれか ! サブメニューアイテムの鋲 menu.bullet: empty、triangle、square、diamond のどれか menu.bullet.position: right または left ! 強調表示されたメニューアイテム menu.hilite: テクスチャ(例 Raised) menu.hilite.color: 色 menu.hilite.colorTo: 色 menu.hilite.textColor: 色 ! フォーカスウィンドウ window.title.focus: テクスチャ window.title.focus.color: 色 window.title.focus.colorTo: 色 ! 非フォーカスウィンドウ window.title.unfocus: テクスチャ window.title.unfocus.color: 色 window.title.unfocus.colorTo: 色 ! ウィンドウラベル window.label.focus: テクスチャ または ParentRelative window.label.focus.color: 色 window.label.focus.colorTo: 色 window.label.focus.textColor: 色 window.label.unfocus: テクスチャ または ParentRelative window.label.unfocus.color: 色 window.label.unfocus.colorTo: 色 window.label.unfocus.textColor: 色 ! ハンドルバー window.handle.focus: テクスチャ window.handle.focus.color: 色 window.handle.focus.colorTo: 色 window.handle.unfocus: テクスチャ window.handle.unfocus.color: 色 window.handle.unfocus.colorTo: 色 ! リサイズグリップ window.grip.focus: テクスチャ window.grip.focus.color: 色 window.grip.focus.colorTo: 色 window.grip.unfocus: テクスチャ window.grip.unfocus.color: 色 window.grip.unfocus.colorTo: 色 ! ウィンドウボタン window.button.focus: テクスチャまたは ParentRelative window.button.focus.color: 色 window.button.focus.colorTo: 色 window.button.focus.picColor: 色 window.button.unfocus: テクスチャまたは ParentRelative window.button.unfocus.color: 色 window.button.unfocus.colorTo: 色 window.button.unfocus.picColor: 色 window.button.pressed: テクスチャ(例 Sunken) window.button.pressed.color: 色 window.button.pressed.colorTo: 色 ! ウィンドウ周囲の枠 window.frame.focusColor: 色 window.frame.unfocusColor: 色 ! フォントとウィンドウラベルのテキストの位置 window.font: Font window.justify: center、left、right のどれか ! その他のリソース ! すべてのコンポーネントの周囲に描画できる枠 borderWidth: ピクセル数、例えば 1 borderColor: 色 bevelWidth: ピクセル数 > 0 handleWidth: ピクセル数 > 0 ! ウィンドウ枠の幅(バージョン 0.61.x 以上) ! 未指定なら frameWidth には bevelWidth の値が利用される frameWidth: ピクセル数 > 0 ! スタイル選択時に実行されるコマンド ! ルートウィンドウの壁紙設定を実行するのが典型的 rootCommand: シェルコマンド、例えば bsetroot -mod 4 4 -fg rgb:5/6/6 -bg grey20 ! いくつかの bbtools はこれらの古い 0.51 のリソースを読み込む menuFont: フォント titleFont: フォント
さてこれは長いリストですが、独自スタイルをつくる際には沢山のキーを 簡単に一つのコマンドにまとめてしまうことができるのを忘れては いけません。例えば、
*color: slategrey *colorTo: darkslategrey *unfocus.color: darkslategrey *unfocus.colorTo: black *textColor: white *unfocus.textColor: lightgrey *font: lucidasans-10
スリットに入れるには、ドッキング可能なほとんどのアプリケーションで -w オプションを使います。例: ~/.xinitrc に次のように記述:
bbmail -w & bbpager -w & exec blackbox
もちろん、スリットのサポート付きでコンパイル(標準ではそうなっています)する 必要があります。
Blackbox を複数のデスクトップ環境で動作させているとき、 screen0 キーはまた任意の適切なデスクトップについて key can also be screen1, 2 などに設定できます。
Blackbox 公式 web サイト:
http://blackbox.alug.org/
不具合あるいは機能追加要請ページおよび最新版はこちら:
http://sf.net/projects/blackboxwm
たくさんのテーマやその他のもの:
http://bb.themes.org/
このマニュアルページは Wilbert Berendsen (wbsoft@xs4all.nl) がまとめました。 他のいくつかの言語版が利用できます。 日本語版は佐藤暁(SATOH Satoru)が (ss@gnome.gr.jp) が訳したものです。