pdaXiiで256色emacs November 25, 2007
Rating: 4.5

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系のディストリビューションも非常に魅力的になるのではないかと思う。

Comments are closed.