rxvt-unicode
rxvt-unicode は細かいカスタマイズができるターミナルエミュレータで rxvt のフォークです。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 は PrintScreen
が押されたときに lpr でスクリーンキャプチャをプリントします。Ctrl+PrintScreen
または Shift-PrintScreen
を使うとターミナルのスクロールバックも印刷されます。設定によって挙動を変更したり無効化することが可能です。
~/.Xresources
! Disable printing the terminal contents when pressing PrintScreen. URxvt.print-pipe: "cat > /dev/null"
設定をリロードする
設定を変更した後、xrdb ~/.Xresources
を実行して、設定をリロードします。新しい設定は全ての新しい端末に適用されます。
カットアンドペースト
Rxvt-unicode はデフォルトで PRIMARY
セレクションにロードされているカットバッファを使います。詳しくは Selecting and pasting text を見てください。
ALT-CTRL-c
と ALT-CTRL-v
でコピーアンドペーストができます。
選択した内容を PRIMARY
にコピーし、CLIPBOARD
が選択した内容で更新されていることを確認するには、次を追加します。
URxvt.perl-ext-common: ...,clipboard,...
以下を追加
URxvt.clipboard.autocopy: true URxvt.keysym.M-c: perl:clipboard:copy URxvt.keysym.M-v: perl:clipboard:paste
Perl 拡張
次の行を含めることで、URxvt perl 拡張機能を有効にできます。
URxvt.perl-ext-common: extension_name_1,extension_name_2,...
拡張子名の間にスペースを 入れないように 注意してください。
クリックできる 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" を置いてください (gmrun はコマンドを実行するのに /bin/sh
を使うため、"eval" は解釈されます):
Terminal = eval urxvt TermExec = ${Terminal} -e
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
によって修正可能です。~/.Xresources
に以下の行を追記することで解決します:
URxvt*skipBuiltinGlyphs: true
長い行で動作が遅くなる
matcher
プラグインが原因かもしれません。matcher
プラグインは行が更新される度に正規表現によるマッチを行うため、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 拡張リファレンス