pdaXiiで256色emacs November 25, 2007
Zaurus(pdaXiiv2)でEmacsをできるだけ快適に使えるように設定を詰めてみた。 やってみて、まさにこれだ!と思った。 以前、Emacsを直ブートするLinuxの作り方で書いたように、求めていたPDAとはEmacsがストレスなく動作するPDAのことだったことに気づいた。 ZaurusでEmacs環境をうまく整備できると、以下のようなご利益がある。
- Emacsは立ち上げっぱなしで、サスペンドから復帰するといきなりEmacs
- フルスクリーンで使える
- 256色表示可能。日本語表示&入力に不具合がない
- 持ち歩きに便利でキー入力しやすい(ザウルスのキーボードへの感想参照)
- ネットにつながる(Zaurusのネット回線2007参照)
ノートPCなら当たり前の効能だが、PDAではここまで到達したものはなかったと思う。 出先でEmacsがフルに使えるありがたみは、分かる人には分かるが分からない人には分からないので、強くは主張しない。
これを実現する方法は色々あると思うが、ポイントは良いターミナルエミュレータを選定&設定することだ。 良いターミナルエミュレータは256色表示が可能で、一部で有名なカラフルなEmacs(Hasta Pronto.org)を使えるようになってカラーテーマを選択できる(Maverick Woo)ようになる。
いくつか試したなかで、pdaXii上でもっとも快適なターミナルエミュレータはgtkterm2だということが分かった。動作がおかしなところがなく、フルスクリーン表示できる。 次点はrxvtだったが、入力するたびに表示が崩れる(Ctrl+Lで再描画できるが面倒)点と、XIMクライアントが必要(uimの場合はuim-fep。gtkterm2の場合はGtkのimmoduleで動作する)な点が難点だった。
今回採用したgtkterm2はipkgでネットワークインストールされたもので、おそらくpdaXiiv2に入っているパッケージ。いろいろなバージョンのipkが手に入るが、どれでもそう大差ないのではないかと思う。
root-:) ipkg info gtkterm2
Package: gtkterm2
Source: http://switch.dl.sourceforge.net/sourceforge/gtkterm/gtkterm2-0.2.3.tar.gz
Priority: optional
Section: X11
Maintainer: Alexander Chukov
Architecture: armv5tel
Version: 0.2.3-1
Depends: gtk2, vte
Filename: gtkterm2_0.2.3-1_armv5tel.ipk
Size: 24330
MD5Sum: 99e417c0264695137695fef2df9c7ba7
Description: GTK2 terminal with tabs
Size: 64.0k
gtkterm2のコンソール表示機能のうちvteとncursesが重要。
root-:) ldd which gtkterm2
libvte.so.4 => /usr/lib/libvte.so.4 (0×4001f000)
libncurses.so.5 => /usr/lib/libncurses.so.5 (0×400ea000)
このうちncursesは単に2バイト文字が通れば良く、どれを使ってもだいたい問題ないと思う。 要するに、コンソール上で日本語が文字化けしていなければOK。
一方、vteは新しいバージョンが良い。 vteはGtkのターミナルエミュレータ用ライブラリなのだが、バージョン0.12あたりで256色対応パッチが入った(それ以前は8色)。
今回はdrun.net(pdaXiiv2の/etc/ipkg.confのリストに入っている)の0.16バージョンを使った。
root-:) ipkg info vte
Package: vte
Version: 0.16.8
Architecture: armv5tel
Maintainer: wasp@drun.net
Filename: vte_0.16.8_armv5tel.ipk
Size: 650822
MD5Sum: f1ce6e46709a89b1eee7fb40c13980b5
Description: terminal emulator
ここでハック。 gtkterm2はlibvte.so.4を必要としているので、0.16.8版でインストールされるlibvte.so.9.2.12からシンボリックリンクした。
root-:) ls -l /usr/lib/libvte.so.4 lrwxrwxrwx 1 root root 25 2007-05-06 14:04 /usr/lib/libvte.so.4 -> /usr/lib/libvte.so.9.2.12
いい加減なものだが、これで256色化される。
以下、補足情報。 emacs自体はNew Emacs 23 W/ Xft And Cjk Support!, Full packages, PIM-suite, Newbie docs(OESF Forums)からダウンロードしたemacs-23。 詳細は忘れてしまったが、gnome関係のライブラリを色々インストールする必要がある。lddの出力を見ると、画像や音声のライブラリが要ることが分かる。自分でコンパイルしたものはないので、ひたすらipkgで追加していけばいつかは起動できると思う。
root-:) ldd which emacs
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0×4001f000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0×40395000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0×40429000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0×4044d000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0×4046d000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0×4047e000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0×404c4000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0×40531000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0×40579000)
libdl.so.2 => /lib/libdl.so.2 (0×40584000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0×4058e000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0×40611000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0×40643000)
libz.so.1 => /usr/lib/libz.so.1 (0×4066b000)
libm.so.6 => /lib/libm.so.6 (0×40686000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0×40736000)
libpthread.so.0 => /lib/libpthread.so.0 (0×40807000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0×40824000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0×40834000)
libtiff.so.3 => /usr/lib/libtiff.so.3 (0×40851000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0×408aa000)
libungif.so.4 => /usr/lib/libungif.so.4 (0×408cf000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0×408de000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0×408f4000)
libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0×409ba000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0×409d2000)
libasound.so.2 => /usr/lib/libasound.so.2 (0×409e1000)
libncurses.so.5 => /usr/lib/libncurses.so.5 (0×40aa0000)
libc.so.6 => /lib/libc.so.6 (0×40aeb000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0×40c0b000)
libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0×40c1b000)
libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0×40c26000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0×40c35000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0×40c5e000)
libiconv.so.2 => /usr/lib/libiconv.so.2 (0×40c83000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0×40d6a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0×40000000)
日本語表示のポイントはロケール設定。LANGとLC_ALLにja_JP.UTF-8を設定した。glibc-localeはpdaXiiv2標準のものを使っている。 現在のロケール設定はlocaleコマンドで表示される。
root-:) set | grep LC_ALL
LC_ALL=ja_JP.UTF-8
root-:) set | grep LANG
LANG=ja_JP.UTF-8
root-:) ipkg info glibc-locale-ja-jp-utf-8 Package: glibc-locale-ja-jp-utf-8 Source: ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.5.tar.bz2 Priority: optional Section: Libraries Maintainer: Alexander Chukov Architecture: armv5tel Version: 2.2.5 Depends: Filename: glibc-locale-ja-jp-utf-8_2.2.5_armv5tel.ipk Size: 234984 MD5Sum: e69faa3abd04d08a0f53c3a5d62b5376 Description: glibc ja_JP.UTF-8 locale file Size: 910.5k
あとは日本語入力のためのインプットメソッド設定とフォントだが、好みにより分かれるところなので省略。 (断片的な情報ながらGtkアプリだけ日本語入力できないケースを直すというトラブル対処法は書いた)
ここまでの設定が標準パッケージ化されるとpdaXrom系のディストリビューションも非常に魅力的になるのではないかと思う。
2台同時USB充電「モバイルクルーザーツイン」
ロウアーミドルの衝撃
Javaデザインパターンハンドブック
ほぼ日刊イトイ新聞の本