試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

GTK+ 2のテーマのインストールについて

テーマの種類

GTK+ 2の見栄えを変更するテーマには、大きく分けて

  • 独自のエンジンによるテーマ
  • 既存のエンジンに基づいたテーマ
  • pixmapによるテーマ

の3種類がある。
エンジンは、GTK+ 2のユーザインターフェースのスタイルを変更するプラグインのようなもので、ソースからビルドして追加する形になる。あるエンジンに基づいたテーマ(配色を変えたバージョンなど)もあり、対象エンジン*1がインストールされていれば使用できる。ものによっては、「あるエンジンのソースを基にしたエンジン」*2が公開されている場合もあり、これはソースからビルドする必要がある。
pixmapを使用するテーマは「pixmap」というエンジンを使用し、テーマごとに添付される画像ファイルを使用して外観を変える形で、ソースをビルドする必要はないが、動作は比較的重い気がする。
(2009/9/24)エンジンには動作が軽いものから重いものまで様々存在する。軽い動作を望むのであればBluecurveエンジンかシンプルな外観のテーマがおすすめ。

テーマのインストール方法

いずれの形のものでも、テーマファイルの中心となるのは[テーマディレクトリ]/[テーマ名]/gtk-2.0/gtkrc
テーマディレクトリは、ユーザ専用の場合には${HOME}/.themes/以下、システム全体で使用する場合け/usr/share/themes/以下(書き込みのアクセス権が必要)となる。

非エンジンテーマ

配布ファイルを展開した中の最上位ディレクトリにテーマ名のディレクトリがある形*3は、既存のエンジンを使用しているか、pixmapのテーマとなっていて、直接テーマディレクトリ以下にテーマ名のディレクトリが来るように配置すれば使える。

エンジン

エンジン形式のものは、上のようなテーマ名ディレクトリと一緒にエンジンのソースが含まれ、これをビルドすることになる。
ソースアーカイブ展開後、中でconfigureスクリプト実行後makemake install(もしくは余分なシンボルを捨てながらインストールする「install-strip」)を実行する形が多い。インストール先は/usr/にしないと認識されない。

$ tar zxf [ファイル名].tar.gz もしくは tar jxf [ファイル名].tar.bz2
$ cd [作成されたディレクトリ]/
$ ./configure --prefix=/usr
$ make
$ sudo make install-strip

この形で入れたものはアンインストールが(ソースツリーを残して「sudo make uninstall」ではできるが)行いにくい。エンジンファイル(*.so)以外に画像ファイルなどが存在しないものに関しては、ホームディレクトリ以下の指定ディレクトリ(詳しくは後述)に直接コピーする方法もある。
下は、gFlat gtk engineでの作業例(一般ユーザ専用)。テーマディレクトリ(gtkrcを含む、テーマ名のディレクトリ)の場所は、配布されているテーマによって異なる場合がある。また、「2.10.0」の部分は、GTK+ 2のモジュールの互換性の関係で、新しいバージョン番号になる可能性がある。

$ mkdir ~/.gtk-2.0/2.10.0/$(arch)-pc-linux-gnu/engines/ ~/.themes/ -p
$ find -name "*.so" -exec strip {} \;
$ find -name "*.so" -exec cp {} ~/.gtk-2.0/2.10.0/$(arch)-pc-linux-gnu/engines/ \;
$ cp -r themes/* ~/.themes/
$ find ~/.themes/ -name "Makefile*" -print0 | xargs -0 rm

複数ユーザで共用したい場合・手動での作業が面倒な場合・画像やアイコンを含む場合などにおいては、ソースからインストールしたパッケージを管理するpacoを使用すると後でアンインストールしやすくて便利。*4

$ sudo paco -lp "[パッケージ名]-[バージョン]" make install-strip

関連記事:

*1:配布元の解説や、付属するgtkrcを見ると分かる

*2:gFlat gtk engineは、Clearlooksというエンジンを基にした別のエンジン

*3:configureなどのファイルや、C言語のソースファイルなどのない場合

*4:sudo gpacoでGUIパッケージマネージャを起動すると、リストから簡単に消せる