6.3. GNOME の画像

6.3.1. GTK+ ってなに?

 GTK+ は Gimp Toolkit だ。もともと Gimp プロジェクトの一部として描かれたものだけれど、優れた汎用ウィジェットにまで育ってきた。詳しくは http://www.gtk.orgを見てね。

6.3.2. GNOMEにおける GTK+ の役割は?

 GTK+ は、GNOME アプリケーションがユーザとのやりとりに使うインターフェイスだ。 CDE での Motif や KDE での AT、win32 での「名無しの権兵衛ウィジット」に似ている。

6.3.3. GTK+ はどんなプログラミング言語をサポートしているの?

 山ほど多くのプログラミング言語でGTK+ プログラムを記述できるよ! この 卑しき FAQ 著者の知る限りでは、以下のようなプログラミング言語用のバインディングがある:

C (オリジナル版)
C++
Objective C
Python
Perl 5
Scheme (Guile)
TOM
Gwydion Dylan
Ruby

 他にも存在するのなら、教えておくれ。(「FAQ 管理人に連絡」を見てね)。

 気が向いたら、ぜひともほかの言語用のバインディングを追加してほしい。ちなみに Scheme のバインディングは、すでに API がきちんと記述されて表現されているので、まずそれを参考にして始めるといいんじゃないかな。

 ……と書いてふと思うんだけれど、このゴルジアスの結び目を切り抜けるのに、CORBA をなんとか使えないものだろうか。もし ORBit 開発者たちが、ローカルな CORBA コールの負荷をふつうの共有ライブラリコール並のところにまで引き下げられるというんなら、GTK そのものを CORBA 化して、新しい言語用のバインディングを ORBit につけたらどうだろう。うん、わかってるよ。これまでの常識だと、 CORBA は重すぎて X コールみたいなボリュームのでかいものには使えないってことなんだけどね。おいおい、変な思いつきを書いたからって文句いうなよ。ぼくが FAQ の管理をしてるのは、自分じゃプログラミングができないからなんだぜ!

6.3.4. imlib ってなに?

 GTK に加え、GNOME は imlib という複数の画像形式を、プログラマからは透過的に扱える、X 用画像ライブラリを使ってる。imlib は ImageMagick や pbmplus のような外部変換プログラムを 使って、自分の知らない画像形式を処理可能な画像形式に変換できる。だから、その 画像形式用の変換プログラムがあれば、ほぼ確実にその画像形式を アプリケーション内で扱えるんだ! imlib は 24 bit から 1 bit の白黒形式まで 様々な色数に対応していて、またそれを透過的に扱え、カラーマップを賢く割り当てたり、自動ディザリングを 行って、個々のディスプレイにあわせた最適な処理をしてくれる。X のアプリケーションで これをやろうとしたことのある人や、アプリケーションが切り替わるときに、そのアプリケーションが独自のカラーマップを割り当てるので画面が一瞬ものすごい色に変わったりするのが我慢できなかった人なら、 特にこの機能は気に入るはずだ。

imlib に関する詳しい情報はhttp://www.labs.redhat.com/imlib を見てね。

6.3.5. このテーマってのはなんなのよ。

 テーマを使うと、GTK+ アプリケーションの見かけや雰囲気を、コンパイルしなおさずに変更できるんだ。いずれ、個々のディスプレイで動作しているすべての GTK+ アプリケーションの テーマを一挙に変更できるようになるはず。いまのところは、テーマは起動時にハードコードすればいい。

 テーマ化された GTK+ アプリケーションの例は: http://gtk.themes.org を見てね。

6.3.6. テーマの使い方は?

 オッケー、ぼくのマシンでテーマが使えるようになった。なにをしたか、おおざっぱに説明しよう。 まず、GTK を再インストールして。現在インストールしている ものから "make uninstall" して、それから次のようにする:

% cvs get -r themes-2 -d themes-gtk+ gtk+
% cd themes-gtk+
% ./autogen.sh --prefix=/opt/gnome && make && make install
% cd themes
% ./autogen.sh --prefix=/opt/gnome && make && make install

 これをやるには新しい imlib がインストールしてある必要がある。AM_PATH_GDK_IMLIBの 未定義エラーが出るのは imlib.m4 が見つからないからだ。原因としては、新しい imlib をインストールしていないか、あるいはよくある autoconf m4 ファイルの問題だ(Autoconf を見てね)。

 これでテーマ化された GTK+ が動くはずだ。さらに、次の作業が必要となる。なお、以下の例では、 "/opt/gnome" のかわりに、あなたのシステムで gnome をインストールした場所を指定するのを忘れないように。どこか別の場所になってることがある。

% cd /opt/gnome/share
% mv gtkrc gtkrc.orig
% ln -s gtk/themes/$(theme)/gtkrc gtkrc

 ここで $(theme) というのは、 gtk/themes のサブディレクトリのどれかだ。いまのところ、以下のようなものがある。

Pixmap
Redmond95 (a Win95-like theme)
Notif (a Motif-like theme)
Metal

 お疲れさん! このシンボリックリンクを作ったら、すべての新しい GTK アプリケーションはそのテーマで立ち上がるはず。同時に複数のテーマを複数のアプリケーションで動かすこともできるんだ。テーマは、そのアプリケーションが動いている間は続く。

 ぼくはテーマを変えてばっかりいるので、それをやらせるつまらないシェルスクリプトまで作っちゃったよ。以下のとおりだ:

#!/bin/sh

ls -l /opt/gnome/share/gtkrc

cd /opt/gnome/share/
test -f gtkrc && mv gtkrc gtkrc.orig

echo "select from the following theme choices:"
cd /opt/gnome/share/gtk/themes/
find -name gtkrc | sed 'sH^¥.¥/HHg;sH¥/gtkrc$HHg'

cd /opt/gnome/share/
theme=
while ! test -f gtk/themes/$theme/gtkrc
do
   echo -n "Choose a theme: "
   read theme
done

rm -f gtkrc
ln -s gtk/themes/$theme/gtkrc gtkrc
ls -l /opt/gnome/share/gtkrc
        

6.3.7. OpenGL ってなに?

 OpenGL は、Silicon Graphics が開発して事実上の業界標準になった、 2D と 3D のレンダリング用 API だ。基本的には、3D 空間の中に視点をおいて、そこからを画面に描けるような 2D 画像をつくるためのツールだ。 SGI の FAQ を引用しよう:

 OpenGL はレンダリングのみの、ベンダーにしばられない API で、モデリング、変換、カラー、光源設定、スムーズシェーディングなど 2D と 3D の画像機能や、もっと高度なテクスチャマッピング、 NURBS、フォグ、アルファブレンディング、モーションブラーなどの高度な機能も提供しています。 OpenGL はその場でも、保存形式(ディスプレイリスト)のグラフィクスモードでも使えます。

 GNOME は、Mesa という OpenGL API の実装を使っている。 Mesa は厳密には OpenGL じゃない。というのも、Mesa はフリーソフトプロジェクトで、 OpenGL の商標を使うための手続きを経ていないからだ。でも、OpenGL の API は忠実に再現している。GNU/Linux や FreeBSD が Unix(tm) でないのと同じ意味で、Mesa も OpenGL(tm) ではないわけ。

6.3.8. ドラッグ&ドロップのサポートはどうなってるの?

 GNOME はいまのところ、Xde ドラッグ&ドロッププロトコルを使っている。XDE は他のツールキット との相互運用を可能にするために X Window System ドラッグ&ドラッグプロトコルの実装に置き換え作業中だ。 詳しい情報は http://www.cco.caltech.edu/‾jafl/xdnd/ を見てね。