rxvt-unicode
rxvt-unicode は細かいカスタマイズができるターミナルエミュレータで rxvt のフォークです。一般に urxvt
と呼ばれている、rxvt-unicode はデーモン化して一つのプロセスで複数のクライアントを実行することができ、システムリソースの使用を抑えることができます。Marc Lehmann によって開発されており、rxvt-unicode の取り柄としては Unicode による多言語サポートや、透過、複数のフォントタイプの表示機能、Perl 拡張のサポートなどが挙げられます。
インストール
rxvt-unicode パッケージでインストールすることができます。
設定
設定と値の完全なリストは urxvt(1) と urxvt(7) を見て下さい。
~/.Xresources の作成
rxvt-unicode の外観や機能はコマンドラインの引数や X resources によって制御されます。コマンドライン引数は X resources の設定よりも優先して適用されます。
urxvt --help
は全ての rxvt リソースを標準エラーに出力します。各リソースの説明は man ページに存在します。
スクロールバックの位置
デフォルトでは、シェル出力が更新されると、スクロールバックの表示は自動的にバッファの最後にジャンプし、新しい出力を表示します。前の出力(コンパイラメッセージなど)を表示したい場合は ~/.Xresources
に以下のオプションを設定します:
! do not scroll with output URxvt*scrollTtyOutput: false ! scroll in relation to buffer (with mouse scroll or Shift+Page Up) URxvt*scrollWithBuffer: true ! scroll back to the bottom on keypress URxvt*scrollTtyKeypress: true
セカンダリスクリーンのスクロールバッファ
セカンダリスクリーンでページャをスクロールすると (例えば less
で -X
オプションを省略した場合)、端末のバッファではなくページャ内でスクロールできるようスクロールバックバッファを無効にすることをお勧めします。konsole および vte ベースの端末ではデフォルトでこういう仕様になっており動作を変更できません。urxvt で セカンダリスクリーンのスクロールバックバッファを無効にするには:
URxvt.secondaryScreen: 1 URxvt.secondaryScroll: 0
上記の設定は、マウスホイールを使用してスクロールする場合を除いて、期待通りに機能します。マウスホイールでセカンダリスクリーンのページャをスクロールしたとき、スクロールバックバッファに何かがあると、ページャの代わりにスクロールバックバッファがマウスホイールでスクロールされます。この問題を解決するには、rxvt-unicode に新しいオプションを導入する必要があります [1]。AUR の rxvt-unicode-better-wheel-scrollingAUR でパッチが適用された rxvt-unicode が利用できます。パッケージのインストール後、以下を設定ファイルに追加してください:
URxvt.secondaryWheel: 1
フォントを宣言する方法
URxvt.font: 9x15
上記の設定は以下と同じです:
URxvt.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1
同じフォントを太字で使用するには:
URxvt.font: 9x15bold
上記の設定は以下と同じです:
URxvt.font: -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1
X コアフォントの短縮名の完全なリストは /usr/share/fonts/misc/fonts.alias
にあります (/usr/share/fonts/
のサブディレクトリにも fonts.alias ファイルが存在しますが、実際のフォントとは別のパッケージになっているため、インストールされていないフォントも含まれます)。フォントの短縮エイリアスは ISO-10646-1 (Unicode) バージョンではなく ISO-8859-1 バージョンを選択し、100 DPI バージョンではなく 75 DPI バージョンのフォントが使われるため、フォントを選択したいときは長い方の名前を使ってください。
上記はビットマップフォントの話で、他のフォントは以下のように Xft で使うことができます:
URxvt.font: xft:monaco:size=10
または:
URxvt.font: xft:monaco:bold:size=10
以下のようにターミナルにエスケープコードを出力することで一時的にフォントをテストすることが可能です:
$ printf '\e]710;%s\007' "xft:Terminus:pixelsize=12"
フォントの間隔
デフォルトでは文字の間隔が広すぎるように感じられる場合、以下のエントリで調整できます:
~/.Xresources
URxvt.letterSpace: -1
-1
で1ピクセル文字の間隔が狭まります。必要ならばもっと狭めることもできます。
カラー
デフォルトで、rxvt-unicode はカラーサポートを有効にしてコンパイルされています。デフォルトの前景色・背景色に加えて、rxvt は256色まで表示することができます (太字・点滅・下線とそれらの組み合わせも可能です)。
foreground, background, cursorColor, cursorColor2, colorBD, colorUL は0から15の数字で色を指定することができ、短い名前で color0-color15 の色を使うことができます。詳しくは #Xresources を参照。
カットアンドペースト
Rxvt-unicode はデフォルトで PRIMARY
セレクションにロードされているカットバッファを使います。詳しくは Selecting and pasting text を見てください。
ALT-CTRL-c
と ALT-CTRL-v
でコピーアンドペーストができます。
Perl 拡張
クリックできる URL
matcher 拡張を使うことでターミナルに表示された URL をクリックできるようになります。例えば、(規定のウェブブラウザを使って) 左マウスボタンでリンクを開くには、以下を .Xresources
に追加します:
URxvt.perl-ext-common: default,matcher URxvt.url-launcher: /usr/bin/xdg-open URxvt.matcher.button: 1
rxvt-unicode 9.14 から、キーボードを使って最近閲覧した URL を開いたり確認することもできるようになりました:
URxvt.keysym.C-Delete: perl:matcher:last URxvt.keysym.M-Delete: perl:matcher:list
マッチするリンクに前景色・背景色といった色を付けることもできます。例えば青色なら次です:
URxvt.matcher.rend.0: Uline Bold fg5
他には、colorUL
を使えば #RRGGBB スタイルでの色付けができます。ただし、これはリンクにマッチした部分だけでなく下線付きテキストのすべてに適用されます:
URxvt.colorUL: #4682B4
ヤンクできる URL (マウスを使用しない)
また、マウスを使わずに選択したURLをブラウザで開くこともできます。
urxvt-perls パッケージをインストールして適当に .Xresources
を調整してください。例:
URxvt.perl-ext: default,url-select URxvt.keysym.M-u: perl:url-select:select_next URxvt.url-select.launcher: /usr/bin/xdg-open URxvt.url-select.underline: true
キーコマンド:
キー | 説明 |
---|---|
Alt+u | 選択モードに移行。スクリーン上にある最後のURLが選択されます。Alt+u を繰り返せば更に上にあるURLを選択できます。
|
k | 上にあるURLを選択 |
j | 下にあるURLを選択 |
Return | 選択モードを終了して選択したURLをブラウザで開く |
o | 選択モードを終了せずに選択したURLをブラウザで開く |
y | 選択モードを終了して選択したURLをコピーする |
Esc | URL 選択モードをキャンセル。 |
シンプルなタブ
urxvt にタブを追加するには、以下を ~/.Xresources
に追加します:
URxvt.perl-ext-common: ...,tabbed,...
タブをコントロールするには:
キー | 説明 |
---|---|
Shift+Down | 新しいタブ |
Shift+Left | 左のタブに移動 |
Shift+Right | 右のタブに移動 |
Ctrl+Left | タブを左に移動 |
Ctrl+Right | タブを右に移動 |
Ctrl+d | タブを閉じる |
タブの色は以下のようにして変更できます:
URxvt.tabbed.tabbar-fg: 2 URxvt.tabbed.tabbar-bg: 0 URxvt.tabbed.tab-fg: 3 URxvt.tabbed.tab-bg: 0
フルスクリーン
urxvt-fullscreenAUR パッケージをインストールして、urxvt をフルスクリーンにするキーバインディングを設定することができます:
~/.Xresources
... URxvt.perl-ext-common: ..., fullscreen, ... URxvt.keysym.F11: perl:fullscreen:switch ...
フォントサイズを即座に変更
urxvt-resize-font-gitAUR パッケージをインストールして ~/.Xresources
の Perl 拡張に以下を追加してください:
URxvt.perl-ext-common: ...,resize-font,...
デフォルトのキーバインド:
Ctrl++
(またはCtrl+Shift+=
) でサイズを大きくするCtrl+-
でサイズを小さくするCtrl+=
でサイズをリセットするCtrl+?
で現在のサイズを表示
以下のようにキーバインドを変更することもできます:
URxvt.keysym.C-Down: resize-font:smaller URxvt.keysym.C-Up: resize-font:bigger
キーバインドとしてCtrl+Shiftを使うなら、デフォルトのキーバインドを無効化しておく必要があります(詳細):
URxvt.iso14755: false URxvt.iso14755_52: false
Perl 拡張の無効化
Perl 拡張機能を使っていない場合、完全に Perl 拡張を無効化することでセキュリティと性能を高めることができます:
URxvt.perl-ext: URxvt.perl-ext-common:
}}
インプットメソッドのインライン表示
urxvt でインプットメソッドをインライン表示にする場合は、以下を ~/.Xresources
に追加します:
URxvt.perl-ext-common: ...,xim-onthespot,...
インプットメソッドの指定とプレエディットタイプの設定も必要になります (fcitx の部分は自分が使用しているインプットメソッドに変更する必要があります):
URxvt.inputMethod: fcitx URxvt.preeditType: OnTheSpot
トラブルシューティング
v9.09 にアップグレードした後に透過が機能しない
rxvt-unicode の開発者によって壁紙を設定するプログラムとの互換性が大幅に削除されました。対応していない壁紙設定プログラムを使うと透過が機能しなくなります。推奨されている壁紙設定プログラムは以下です:
- feh
- hsetroot
- esetroot
完全透過を使うには、URxvt.tintColor と URxvt.inheritPixmap をコメントアウトしてください。
リモートホスト
リモートホストにログインしているときに、urxvt-unicode を使ってテキストモードプログラムを実行すると問題が発生することがあります。その場合は rxvt-unicode-terminfo をリモートホストにインストールするかローカルホストの /usr/share/terminfo/r/rxvt-unicode
をリモートホストの ~/.terminfo/r/rxvt-unicode
にコピーすれば解決できます。rxvt-unicode-256color の場合も同様です。
一部のリモートシステムには TERM=xterm と明記しないと自動的にタイトルが変更しないものもあります。それを修正するには、次の行をリモートマシンの .bashrc に追記してください:
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"'
rxvt-unicode を gmrun ターミナルとして使う
他のターミナルとは異なり、urxvt は -e
への引数としてクォートで囲まれた引数ではなく分割された引数を取ります。この挙動は、クォートで囲まれた引数を期待する gmrun を使うときトラブルになります。これを避けるには、 .gmrunrc
にて gmrun の変数である "Terminal" の前に "eval" を置いてください:
Terminal = eval urxvt TermExec = ${Terminal} -e
(gmrun はコマンドを実行するのに /bin/sh
を使うため、"eval" は理解されます。)Bash でいう $@
と同じように "eval" は -e
の引数を "分割する" 副作用を持つので、コマンドを urxvt に上手く渡せます。
テンキーの出力がおかしい (例: vim)
今までに詳細が報告されてないにも関わらず、 一部のDebian GNU/Linux ユーザはこの症状に遭遇することがあります。TERM=rxvt が互換性あるキーマップを提供していても、どの設定でどのようにして起こるのか不明にも関わらず、間違った TERM 設定によりこの問題が起こる可能性があります。この問題に対する解決策を確認でき、助けになるならレポートしてください。
ただ、xmodmap プログラム (xorg-xmodmap) を使い、テンキーをリマップすることができます。
1. xev
プログラム使用時にて数字キー(テンキー)が生成するキーコードを確認。
xev
プログラムを起動します- キーコードを入力して
xev
が出力する ... keycode xxx ... を探してください。例えば、私のキーボードのテンキー1だと 'keycode 87' を持つ "End" キーでもあります。
2. 大抵の場合 ~/.Xmodmap
に置く、キーコードを表現する xmodmap ファイルを作成か変更。
数字キーの xmodmap ファイル例は次です:
keycode 63 = KP_Multiply keycode 79 = Home KP_7 keycode 80 = Up KP_8 keycode 81 = Prior KP_9 keycode 82 = KP_Subtract keycode 83 = Left KP_4 keycode 84 = KP_5 keycode 85 = Right KP_6 keycode 86 = KP_Add keycode 87 = End KP_1 keycode 88 = Down KP_2 keycode 89 = Next KP_3 keycode 90 = Insert KP_0 keycode 91 = Delete KP_Decimal keycode 112 = Prior keycode 117 = Next
3. xmodmap フィアルを X セッションの起動時に読み込む。
例えば、次の行を ~/.xinitrc
に追記します:
... xmodmap ~/.Xmodmap ...
特定のキーの組み合わせが機能しない
Get Alt key to work in terminal を見てください。
文字を表示するときに遅くなる
alsamixer や xprop といったプログラムのなかにはグラフィックドライバが上手く動かず再描画が酷く遅くなるものがあります。これは ~/.Xresources
のオプションである "skipBuiltinGlyphs" かコマンドラインオプションである -sbg
によって修正できるかもしれません。1つの解決策として ~/.Xresources
に次の行を追記してください:
URxvt*skipBuiltinGlyphs: true
長い行で動作が遅くなる
matcher
プラグインが原因かもしれません。matcher
プラグインは行が更新される度にその行に対して正規表現によるマッチを行うため、巨大な saveLines
を持っていると saveLines
の最大まで行を読み込みこの問題が悪化します。
シンプルな回避方法は次です:
saveLines
を小さくするmatcher
プラグインを無効にする
これらがどうしても欲しいオプションで削除できないなら、特定の長さでURLマッチを無効化させることもできます:
/usr/lib/urxvt/perl/matcher
を~/.urxvt/ext/
へコピーします(ディレクトリがない場合は作成してください)~/.urxvt/ext/matcher
を編集します。サブルーチンであるon_line_update
のmy ($self, $row) = @_;
の行を見付けてください。270行目のはずです。- その行の後に、次の行を追加してください
return () if $row < -100;
。これでターミナル上部から100行超える行でのURLマッチ動作を防げます。
参照
- rxvt-unicode - 公式サイト
- Source Code - Browseable CVS
- rxvt-unicode FAQ - 公式 FAQ
- rxvt-unicode Reference - 公式マニュアルページ
- urxvtperl - 公式 Perl 拡張リファレンス