last modified on [2003-05-17 17.41 (JST: GMT+0900) @403]

Basics
BlueBox の基礎

Author: 河本孝之 (Takayuki Kawamoto, aka philsci);
1st appeared on 17th May, 2003.
Acknowledgement: thanks to Brandon Sneed (aka nivenh), Jason Brisch (aka jbrisch), ayamame, liki, and all developers and contributors of each activity.

References:
nivenh (Brandon Sneed) and jbrisch (Jason Brisch), "BlueBox Overview" (2002).
azathoth (Ben Stormhold), "Bluebox Plugin Development - A Beginners Guide" (2002).

BlueBox について

トップページで紹介したように、BlueBox は Windows 用に開発されているエクスプローラ互換のシェル(ユーザーインターフェイス)です。エクスプローラがデスクトップに表示して機能させている「スタート・メニュー」や「タスクバー」の代わりに、BlueBox は「ポップアップ・メニュー」や「(BlueBox が提供する)タスクバー」や「スリット」を機能させます。

このセクションでは、BlueBox を入手する手順から設定の仕方やサンプルの環境をご紹介します。但し他のセクションにも当てはまりますが、Windows やそれぞれの互換シェルを説明するときには幾つかの用語を使います。ここでは、まずそうした用語を幾つか説明しておきましょう。

BlueBox という互換シェルのシステムや、BlueBox というシステムの上で動いている個々の機能を「BlueBox」とか「システムトレイ」と表記し、そうした機能を提供している個々のソフトウェアを bluebox.exe, bsystray.exe と表記します。したがって、「bluebox.exe の見栄え」(ファイルに見栄えはありません)とか「BlueBox をコピーする」(機能をコピーすることはできません)といった表記はしませんので、注意して下さい。これはちょうど、「Windows を食べる」(OS は食べ物ではありません)とか「エクスプローラを履く」(エクスプローラは履けません)といった表現が意味を成さないことに似ていますが、システムとそれを提供するファイルの呼び方が混同されると誤解を生むこともありますので、本サイトではこれら二つを区別しています。

実行(可能)ファイル」とは .exe や .dll という拡張子がついたファイルのことです。.dll (dynamic link library) は単独で動きませんが、.exe (executables: 単称でも集合名詞として複数形にします)は単独で起動するように作られたプログラムです(「単独で起動する」からと言って「単独で動く」とは限りません。必須の .dll がないと動作しない .exe はたくさんあります)。他方で、.txt(テキストファイル)や .jpg(jpeg 画像のファイル)は、単独で動作したり何かをするわけではなく、他のプログラムから開いて読んだり見たりするものなので、実行可能とは言いません。

ユーザーインターフェイス(UI, user interface)」とは、シェルを含むソフトウェア全般が提供している、ユーザーとソフトウェアが情報や命令をやりとりするための機能を広く意味しています。ウインドウのタイトルバーにマウスポインタを当ててドラッグすることとか、キーボードで I ビーム(テキストを入力するときに現れる縦棒状の点滅)を移動させるとか、そういったユーザーの入力に対して、ウインドウを移動させるとか愚にもつかない語句を表示するとかいった応答をして結果を示すことなど、わたしたちと OS を介するやりとり全般についてサポートしている機能を指します。エクスプローラが提供しているデスクトップ環境では、スクリーン上で右クリックすると「画面のプロパティ」や「新規作成」といったメニューが表示されますが、互換シェルの提供するデスクトップ環境では、多くの互換シェルが提供している「ポップアップ・メニュー」という機能を使って、ユーザーが設定したメニュー項目を表示しています。エクスプローラや互換シェルといったソフトウェアも、ユーザーインターフェイスを提供するためのソフトウェアの一つであり、その意味では Excel や Photoshop と同じです。イメージするなら、「シェル」というソフトウェアがスクリーン全体に最大化されていて、そのウインドウの縁が見えなかったりメニューバーがなかったりするだけだと思えばよいでしょう。ポップアップ・メニューは、ちょうど一般的なアプリケーションのウインドウを右クリックして表示されるコンテクスト・メニューと同じように考えればよいと思います。

BlueBox や BlackBox for Windows の中でよく言及される BlackBox は、Brad Hughes, Jeff Raven の両氏をはじめとする有志が開発している、X11 用(Linux/UNIX, *BSD 用)のウィンドウ・マネージャです。『Linux Japan』(2001年3月)で佐藤暁さんが BlackBox を紹介された時の記事を参考にしてみると、BlackBox には、1) C++ で書かれている, 2) コード量が少なくて動作が軽い, 3) 組み込みの画像処理クラスをもっている, 4) ICCCM に対応(Windows で言う DDE, OLE のような、アプリケーションどうしでデータをやりとりする仕組み), 5) はじめから国際化されている, 6) KDE, GNOME など他のデスクトップ環境と共用できる、といった特徴があるそうです。UNIX, Linux などの環境では、グラフィカルなデスクトップ環境を提供する X Window System 上でウインドウを表示したりするために、ウィンドウ・マネージャと呼ばれる仕組みが必要で、BlackBox の他にも AfterStep や sawfish, Enlightenment といった数多くのウィンドウ・マネージャがあります。BlackBox もそうしたウィンドウ・マネージャの一つであり、いま紹介した特徴をもっていますが、他のウィンドウ・マネージャよりもシンプルに作られている分、独自のアイコンを表示するといった機能まではもっていません。その代わりにメニューやウィンドウの配色を変更する機能がサポートされており、そういう配色などの設定を「スタイル」と呼んでいるわけです。

BlueBox が提供するユーザーインターフェイス機能の一つで、デスクトップを右クリックして表示されるメニューを「ポップアップ・メニュー(popup menu)」と呼びます。また、ポップアップ・メニューが表示する個々の項目を「メニュー項目(items)」と言い、一つのメニュー項目の中にまたメニュー項目が含まれているときは「親項目(parent item)」「子項目(child item)」と呼びます(これはこのサイトで使う呼び方であり、正式な呼称ではありません)。

また、デフォルトの環境で提供されるもう一つの機能に「タスクバー(taskbar)」があります。なお、日本語として表記するときに、原語で合成語となっているものは中黒(・)をつけません。ポップアップ・メニューは "popupmenu" とは表記されませんが、タスクバーは一語で "taskbar" と表記されているので、「タスクバー」と一語で表記します。BlueBox が提供するタスクバーには、画面を切り替えて仮想のデスクトップを使えるようにする「ワークスペース (workspace)」や、起動しているアプリケーションのウインドウ名を表示するタスク、あるいは時刻表示といった機能があります。

そして、デフォルトの環境では表示されませんが、「プラグイン(plugin)」あるいは「スリット・アプリケーション(slit apps)」と呼ばれる拡張機能をサポートするための「スリット(slit)」と呼ばれるバーがあります。

Windows 用に開発されている他の互換シェルに関する文書ではあまり使わない言葉もあります。例えば、仮想デスクトップは BlueBox(BlackBox)では「ワークスペース(workspace)」と言います。

[top]

BlueBox の配布先

BlueBox を入手するには、以下の二箇所があります。

公式サイトには、公式版の圧縮ファイルの他に "daily"(スナップショット)と呼ばれる開発途中のファイルを収めた圧縮ファイルがあります。比較的安定した動作を求めるなら公式版(Latest official)を入手し、それ以降に新しい機能が盛り込まれたかどうかを履歴(changelog)で確認してから、新しい機能を試してみたいときは "daily" を使ってみるとよいでしょう。

CVS(Concurrent Versions System)リポジトリは、BlueBox のソースコードが公開されている場所です。"Browse the CVS Tree" という項目の "Browse CVS Repository" というリンクから、「リポジトリ」と呼ばれるプロジェクトごとのスペースへ入ります。入った先には、まず "CVSROOT" と "bluebox" というディレクトリがあって、前者は CVS でファイルを管理するための設定ファイルなどを置いている場所なので、ひとまず考えなくてよいでしょう。"bluebox" というディレクトリの方には、BlueBox の恐らくは最新のソースコードが置いてありますから、自分の使っているマシンの CVS からリモートでソースコードをもらってコンパイルするなり、個別のソースコードを見るなりして参考にしてください。但し、"release" とか &ReleaseZips" というディレクトリにコンパイルしたソフトウェアが入っているわけではありませんので、コンパイルできる環境をもっていない方は参考程度にしかならないでしょう。

最新の公式版が更新されたかどうかは、上記で紹介した公式サイトを確認するか、あるいは lokai.org のシェル・フォーラムにある、開発者からのアナウンスを確認しておくようにすれば問題はない筈です。それ以外にも、desktopian.org, shellscape.org, shellfront.org, blizzle.com といった、互換シェルを扱っているサイトに足しげく通うのもよいと思います。

[top]

BlueBox の構成ファイル

BlueBox のインストールは、BlackBox for Windows のように懇切丁寧なインストーラはありませんが、きわめて簡単だと思います。まず、ダウンロードした圧縮ファイル(公式版の場合は bluebox.zip、daily なら 20030503.zip)をどこかへ展開(解凍)しましょう。インストールの手順は次のページで説明しますので、まずは起動に必要なファイルなどの説明をしておきます。ダウンロードした圧縮ファイルを展開すると、公式版では次のようになっていると思います。

BlueBox 公式版(0.41)の内容
/styles /fluxbox Artwiz, Blue, BlueNight,... スタイル・ファイルが最初から数多く登録されています。Makefile.am, Makefile.in は Linux/UNIX 用の BlackBox で使われるファイルなので、このフォルダ自体が BlackBox 用のスタイル・ディレクトリを借用したものなのでしょう。
  cupertino   アメリカのカリフォルニア州にある街の名前から来ています。デフォルトのスタイル・ファイルです。ウィンドウの配色などを設定しているファイルであり、Windows のシステム・カラーなどと同じくアクティブなウィンドウの描画色やフォントなどを指定します。
bbkeys.exe     キーに特別な命令を割り当てる、「ホットキー(hotkey)」という機能をサポートするためのプラグインです。単体でも動きます。
bbkeys.rc     bbkeys.exe の設定ファイルです。
bcpu.exe     スリット用のプラグインで、CPU の使用状況をモニターします。BlueBox 用のプラグインで .exe という拡張子がついているものの多くは、単体でも動作します。
bdde.exe     DDE (Dynamic Data Exchange) をサポートするためのプラグインです。DDE は、OS/2, MacOS, Windows で採用されている機能で、アプリケーション同士が直に命令やメッセージなどのデータをやりとりできるようにします。データを発信する方のアプリケーションは「(DDE) サーバ」と呼び、データを受ける方のアプリケーションは「(DDE) クライアント」と言います。DDE を拡張した仕様に OLE (Object Linking and Embedding) があって、Excel で作った表を WORD に取り込んだり、あるいは Photoshop で編集した画像を ImageReady で GIF アニメーションにするなどといった場面で、このような技術が使われています。Windows の DDE では、基本的にクリップボード形式でデータのやりとりをするというコンセプトで実装され、64 kB 以内のデータしか扱えないという制限がありました。それを解決して、更にデータを同期させたり、データ通信の単位をプロセスにまで落とし込んだり、あるいはサーバからデータだけでなく関数も取り出して一方のアプリケーションから他方のアプリケーションをコントロールするオートメーション機能などを実装したのが OLE(version 2.0 以降)です(現在は、ネットワーク環境も想定した ActiveX というテクノロジーの一部として扱われているので OLE という言葉はあまり使われていないようです)。なんか DDE より OLE の説明になってるな(笑。
blackbox.rc     BlackBox で使われている、デスクトップ環境の基本的な設定を記述するファイルです。Windows 用の互換シェル LiteStep で言うところの step.rc に近い役割をもっていて、ツールバーの位置やワークスペースの数などを設定できます。
bluekbox.exe     BlueBox の本体です。
bluekboxhk.dll     マウスポインタをクリックするとか、Win キーを押すといったユーザーの入力で発せられる「メッセージ」と呼ばれる命令やデータは、Windows とアプリケーションとハードウェアのドライバとでやりとりしています。BlueBox は、blueboxhk.dll によって、BlueBox は「フック」と呼ばれる介入処理をして、アプリケーションと Windows の命令のやりとりなどを監視したり途中で命令内容を制限・変更したりできるようになります。或るアプリケーションがアクティブで、何らかのキーに特別な命令が割り当てられていても、シェルがフックしてキーボードからの入力処理を途中で変更すると、そのアプリケーションで設定されている処理よりも、シェルで同じ組み合わせのキーに登録されているホットキーの処理が優先されたりします。
bsetroot.exe     Linux/UNIX で使う BlackBox では、ルート・ウィンドウの外観を設定するためのプログラムとして提供されており、BlueBox でもデスクトップの配色を設定できます。Windows では「画面のプロパティ」をよく使いますが、BlueBox ではスタイル・ファイルにコマンドとして設定を記述して、デスクトップの配色や壁紙を指定します。
bshelldlg.exe     "bshelldlg.exe" の後に -run, -find というオプションをつけることで、「ファイル名を指定して実行」及び「検索」のダイアログ・ボックスを表示します。
bsystray.exe     システムトレイの機能をサポートするプラグインです。
buptime.exe     "uptime" というのは、システムが稼動し始めてからの経過時間のことです。既に BlueBox が稼動するマシンの uptime は bcpu.exe が監視しているので、単独のマシンを使っている環境で buptime.exe を使う必要はありません。buptime.exe はコンピュータ名や IP アドレスを指定して、他のマシンの uptime をモニターするために使います。
init.rc     互換シェルの LiteStep を使っている方は、「LoadModule コマンドだけを抜き出したファイル」のようなものだと理解すればよいでしょう。BlueBox が起動するとき、一緒に起動させるプラグインをオプション付きで指定するためのファイルです。このファイルにスリットの中に読み込むときは -w というオプションをつけて、単体のアプリケーションとして起動するときは -w を付けずに表示させる座標を -top, -left で指定します。他にも、プラグイン毎にオプションがあります。
menu.rc     ポップアップ・メニューの項目を設定するファイルです。書式は後のページで説明しますので、そちらを参照して下さい。

以上のファイルやフォルダを、展開したフォルダの階層をそのままにして適当な場所へ移します。ふつうは C:\BlueBox というフォルダを作って移しますが、D:\BlueBox でも C:\Program Files\shell\BlueBox でもかまいません。

[top]

crossedge.net - Copyright©1999-2003 by Takayuki KAWAMOTO [philsci].
written in XHTML 1.1, Cascading Stylesheets level 3, and JavaScript 1.2 or later with encoding in utf-8n [cr/lf].