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

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

rxvt-unicodeの覚え書き(概要とconfigureオプション、256色対応など)

以前は端末エミュレータmltermを使用していたが、端末の256色拡張の色を使い始めたときから、「mltermの256色モードを有効にするebuildと不具合について」で書いたように、mltermでは256色パッチを当てても太字の表示時に色が変になるために使えなくなってしまった。その後しばらくはXfce4のTerminalという端末エミュレータを使用していたのだが、GNOME端末と同じVTEという端末ウィジェット(GUI上の部品)を使用している関係か、動作が重くなってしまった。*1
その後調べている内に、256色表示とXのビットマップフォント(PCF形式)が使用でき、UTF-8環境で正常に使用できる軽量な端末の1つとしてrxvt-unicodeを見付けた。
Terminalなどの端末のメリットとして感じたのはコピペがやりやすいことだが、ドラッグ操作で選択される範囲(PRIMARY)をマウス中クリックで貼り付けすることはrxvt-unicodemltermでも可能で、できないわけではない。

256色対応について

そのままビルドしても256色にはならないが、ソースツリーに含まれるdoc/urxvt-8.2-256color.patchというパッチを適用後autogen.shを実行し、configureスクリプト--enable-xterm-colors=256オプションを付け加えると、256色表示が可能となる。更に、--with-term=rxvt-256colorを付けると端末の種類(環境変数TERMに入る文字列)を別途設定する必要がなくなる。

configureオプション

rxvt-unicodeについて調べていると、ソースを入手して自前でビルドしている例が多い。この端末は色々な機能を持ちながら、軽量化などの目的で切ってしまうようにconfigureスクリプトで設定できるためなのかもしれない。
Mandriva Linux 2009.0ではパッケージが用意されているものの、自分にとって不要な幾つかの機能が有効にされているため、それらを切ってRPMパッケージを作成することにした。
Mandriva Linux 2009.0のソースRPMに含まれる.specファイル(バージョン9.05-1mdv2009.0)のオプションをもとに、Xft,Perl関係とfading,frillsを外し、コードセットは「jp」「jp_ext」のみにした。更に、認識されない幾つかのオプション指定も外した。

--- rxvt-unicode-9.05-1mdv2009.0.orig/SPECS/rxvt-unicode.spec
+++ rxvt-unicode-9.05-1mdv2009.0/SPECS/rxvt-unicode.spec
@@ -9,7 +9,7 @@
 Source1:	%{name}.desktop
 BuildRequires:	X11-devel
 #BuildRequires:	utempter-devel
-BuildRequires:	perl-devel
+#BuildRequires:	perl-devel
 Buildroot:	%{_tmppath}/%{name}-%{version}-buildroot
 
 %description
@@ -20,25 +20,22 @@
 
 %prep
 %setup -q
+%{__patch} -p1 < doc/urxvt-8.2-256color.patch
 
 %build
 ./autogen.sh
 
 %configure2_5x \
-	--with-xpm \
 	--enable-unicode3 \
 	--enable-combining \
-	--enable-xft \
+	--disable-xft \
 	--enable-font-styles \
-	--enable-xpm-background \
 	--enable-transparency \
-	--enable-tinting \
-	--enable-fading \
+	--disable-fading \
 	--enable-rxvt-scroll \
 	--disable-next-scroll \
 	--disable-xterm-scroll \
-	--enable-perl \
-	--disable-plain-scroll \
+	--disable-perl \
 	--enable-xim \
 	--enable-backspace-key \
 	--enable-delete-key \
@@ -46,7 +43,7 @@
 	--disable-8bitctrls \
 	--enable-swapscreen \
 	--enable-iso14755 \
-	--enable-frills \
+	--disable-frills \
 	--enable-keepscrolling \
 	--enable-selectionscrolling \
 	--enable-mousewheel \
@@ -56,7 +53,10 @@
 	--enable-pointer-blank \
 	--disable-utmp \
 	--disable-wtmp \
-	--disable-lastlog
+	--disable-lastlog \
+	--with-codesets=jp,jp_ext \
+	--enable-xterm-colors=256 \
+	--with-term=rxvt-256color
 
 %make
 
@@ -82,7 +82,7 @@
 %files
 %defattr(-,root,root)
 %{_bindir}/urxvt*
-%{_libdir}/urxvt
+#%{_libdir}/urxvt
 %{_datadir}/applications/*.desktop
 %{_mandir}/man*/*
 

上記修正を行って作成したRPMパッケージとソースRPM別館の配布ページに公開した。
下は、ソースツリーを展開し、ディレクトリに入ってからの作業を自動化するスクリプトの形。

#! /bin/sh
patch -p1 < doc/urxvt-8.2-256color.patch
./autogen.sh
./configure \
	--enable-unicode3 \
	--enable-combining \
	--disable-xft \
	--enable-font-styles \
	--enable-transparency \
	--disable-fading \
	--enable-rxvt-scroll \
	--disable-next-scroll \
	--disable-xterm-scroll \
	--disable-perl \
	--enable-xim \
	--enable-backspace-key \
	--enable-delete-key \
	--enable-resources \
	--disable-8bitctrls \
	--enable-swapscreen \
	--enable-iso14755 \
	--disable-frills \
	--enable-keepscrolling \
	--enable-selectionscrolling \
	--enable-mousewheel \
	--enable-slipwheeling \
	--enable-smart-resize \
	--enable-text-blink \
	--enable-pointer-blank \
	--disable-utmp \
	--disable-wtmp \
	--disable-lastlog \
	--with-codesets=jp,jp_ext \
	--enable-xterm-colors=256 \
	--with-term=rxvt-256color
make
sudo make install

マウスを滅多に使用しない使い方をする場合は、更にマウス関連のオプションが外せるかもしれない。他にも削ろうと思えば削れるものがあるかもしれないが、今回はこの状態にしておく。
Debianではオプションの付け具合を数段階に分けて、幾つかのパッケージに分けているようだ。以下、Debian向けパッチ(rxvt-unicode_9.05-1+lenny1.diff.gz)からの引用。

(共通オプション)
	--enable-plain-scroll \
	--enable-keepscrolling \
	--enable-selectionscrolling \
	--enable-pointer-blank \
	--enable-utmp \
	--enable-wtmp \
	--enable-lastlog \
	--with-term=rxvt-unicode \

(lite版に追加されるオプション)
	--disable-xft \
	--disable-perl \
	--disable-iso14755

(標準版に追加されるオプション)
	--enable-xft \
	--enable-font-styles \
	--enable-afterimage \
	--enable-transparency \
	--enable-fading \
	--enable-rxvt-scroll \
	--enable-next-scroll \
	--enable-xterm-scroll \
	--enable-perl \
	--enable-mousewheel \
	--enable-slipwheeling \
	--enable-smart-resize \
	--disable-iso14755

(ml版に追加されるオプション)
	--enable-unicode3 \
	--enable-combining \
	--enable-xft \
	--enable-font-styles \
	--enable-afterimage \
	--enable-transparency \
	--enable-fading \
	--enable-rxvt-scroll \
	--enable-next-scroll \
	--enable-xterm-scroll \
	--enable-perl \
	--enable-xim \
	--enable-iso14755 \
	--enable-frills \
	--enable-mousewheel \
	--enable-slipwheeling \
	--enable-smart-resize

--enable-iso14755というのがあるが、これを有効にするとCtrl+Shiftを押しながらUnicodeのコードを入力する形のモードが使えるようになり

8 a 6 6 | 9 a 1 3 | 9 0 4 b | 7 5 2 8 | 4 e 2 d | 3 0 6 a | 4 c | 6 9 | 6 e | 7 5 | 7 8 | 5 0 9 9 | 5 f d 8 | 9 3 3 2

上に書いた「|」で区切ったまとまりをそれぞれ入力してキーを離す作業を繰り返すと

試験運用中なLinux備忘録

となる。この形式の入力モードが不要なら、このオプションは切ってもOK。

関連記事:

使用したバージョン:

  • rxvt-unicode 9.05 (9.05-1mdv2009.0)
  • mlterm 2.9.4 (2.9.4-3mdv2009.0)
  • LXTerminal 0.1.3 (0.1.3-1mdv2009.0)
  • Terminal 0.2.8 (0.2.8-5mdv2009.0)

*1:フォントがビットマップでなくアウトラインフォントであることの体感速度への影響はやはり大きい気がした。LXDELXTerminalもVTEを使用している上に(バージョン0.1.3の時点では)設定項目も少なく、使えなかった