X11.app 上で使う terminal
Leopard の X11.app 上での terminal について(長くなってきたので別ページにまとめてみたのがこのページ)
そもそも、どういうシチュエーションを考えているか、であるが、
- Leopard は unicode
- remote login する Linux server は euc-jp
- Linux にせよ Mac OS X にせよ、自分の作成するテキストファイルは euc-jp
といった状況で、できるだけ幸せな環境を用意したいというのが発端。
X11.app なんて使わないで iTerm.app とか使えば?という意見もありますが、X11 の環境が好きなんですよね。( X11.app の kterm とか xterm の方が描画のレスポンスが良いと感じるし。) ちなみに Tiger までは、ことえりな kinput2 が使えていたので、kterm だけで過ごしてきた。
というわけで、以下、いろいろ試した記録と言うかメモを時系列ごとに。
terminal
Terminal.app も iTerm.app も使ってみたが、表示が崩れたりレスポンスが悪かったりと、どうも気に入らない。(ほんの僅かな事なんですが、使用頻度が高いので気になるのです。)ということで、kterm に結局戻りそう。
ただ kterm だと(Leopard では)日本語入力に問題があるので、uim + anthy 辺りを入れて誤摩化そうとしているところ。
pkg-config-023.tgz anthy-9100e.tgz gettext-017.tgz uim-154.tgz
ん? uim-fep で文字入力できるが、wide char の扱いが変。何が悪いのかな?kterm なのか、terminfo とかの問題なのか。。。 kterm は個人的には好きなんだけど、obsolete な感じもするし、 ちょっと時間がないので、default で入っている xterm (uxterm) を使う方法を調べてみる。
uim の設定
(define default-im-name 'anthy) (define-key generic-on-key? '("<Control>" "<Control>o")) (define-key generic-off-key? '("<Control>" "<Control>o")) (define-key anthy-on-key? 'generic-on-key?) (define-key anthy-latin-key? 'generic-off-key?) (define-key generic-cancel-key? "<Control>g")
xterm と luit
Mac OS X 上であれば、utf-8 な uxterm (xterm) を使うだけで、ファイル名や utf8 な文字をちゃんと表示できる。
utf-8 でない他の server で作業するときにどうするかが問題だが、luit という locale's encoding filter (?) を使うと便利良いようだ。
例えば、eucjp な server に ssh login するときには
luit -encoding eucJP ssh remote_server_name
という風にするだけで、remote server の eucjp を utf8 に変換して表示してくれる。 luit でどのような locale encoding 、charset が使えるかを調べるには
luit -list
とかすれば良い。
後は使うフォントだな。。。なんで default font が汚いんだろう。
uxterm
Leopard 標準の X11.app には、uxterm は含まれてなかったかもしれない。(いろいろ試していて初期状態がわからない ^-^:;)
XQuartz - Trac に置いてある X11.app には uxterm が含まれている。この他いろんな bug fix もされているし、ここの X11.app を入れるのが良いと思う。
k14 な unicode font
k14 が好きなので、河野さんのところから iso10646 な k14 font をもらってくる。 これを展開して、14x14jp.{pcf,bdf}.gz を /usr/X11/lib/X11/fonts/misc/ の中に入れる。その後、fonts.dir に
14x14ja.pcf.gz -misc-fixed-medium-r-normal-ja-14-130-75-75-c-140-iso10646-1
を加える。font 指定を簡便にするため、ついでに fonts.alias に
k14u -misc-fixed-medium-r-normal-ja-14-130-75-75-c-140-iso10646-1
を加える。そして
uxterm -fn a14 -fw k14u
のように起動すれば、k14 な kterm を使っているかのごとく利用できる。ls で utf8 なファイル名を表示できるし、uim-fep もばっちり使えるし、これで完了(かな?)
(追記 2010/09)East Asian Ambiguous Character Width の問題がある場合(記号文字が正しく表示されない等)には、次のように -cjk_width オプションを付ければよい
uxterm -cjk_width -fn a14 -fw k14u
luit's bug?
luit を使うと
Warning: couldn't find charset data for locale ja_JP.UTF-8; using ISO 8859-1. Warning: could not change ownership of tty -- pty is insecure!
という warning が出るなぁ... 一応使えてるけど、そのうちに調べよう。
XQuartz - Trac に置いてあった X11.pkg (2.2.3) を入れて解決。ただし、上記の k14 用の修正を施した fonts.dir, fonts.alias は上書きされるので要修正。
terminal その2
uxterm で ok だと思っていたが、時折表示が崩れる事がある。 正確に書くと、uxterm 上から luit -encode eucJP ssh で Linux server に login した状態で、emacs -nw で日本語(eucjp) の文章を入力編集しようとすると、カーソルの移動に伴い文字が表示されなくなったりする。M-x redraw-display すると表示は戻るけれど、再びカーソルを移動すると表示がおかしくなる。塩梅が悪い。
というわけで、試しに rxvt-unicode を試してみる。
rxvt-unicode 9.06 を以下のように configure して make
$ CXXFLAGS="-arch i386 -arch ppc" ./configure --prefix=/usr/local --enable-next-scroll \ --enable-perl --enable-xim --with-term=xterm
固めたもの→ rxvt-unicode.tgz
LC_CTYPE=en_US.UTF-8 urxvt -ls +sb -fn a14,k14u -geometry 80x50
てな感じで起動すればよい。
rxvt-unicode を使って、同じように Linux server に入って emacs 編集をしてみたが、表示には問題が発生しなかった。
ところが、今度は C-v や C-o の入力がへん。これは emacs に限らず、ng でも同じ。例えば、ページを送るために C-v をしても移動しない。C-v C-v とすると、C-v になる。また、日本語変換するために C-o しても効かず、C-v C-o としないと日本語変換モードに入れない。というわけで塩梅が悪い。
いろいろ調べて行くと、uxterm にせよ、rxvt-unicode にせよ、luit で remote login しない限りは、何の問題もないようである。(ま、当たり前なんだけど)どうも、luit での encode filtering にちょっとばかり問題があるような気がする。
xterm & luit の build
新しい xterm と luit を build してみる。source は ここ→ http://invisible-island.net/xterm/
xterm の方は
$ ./configure --prefix=/usr/local --enable-luit && make
こんなもんで、/usr/local/bin に入れる。
luit の方は
$ LDFLAGS=-L/usr/X11/lib ./configure --prefix=/usr/local && make
てな感じ。
状況は変わらず。luit で remote login での encode 変換をする限りは、塩梅が良くない。
Keyword(s):[Mac OS X] [Leopard] [X11] [terminal] [xterm] [uxterm] [rxvt-unicode] [kterm]
References:[MacOSX(macOS)メモ] [ThinkPad X60s]