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 ページに存在します。
スクロールバックの位置
By default, when shell output appears the scrollback view will automatically jump to the bottom of the buffer to display new output. If in cases where you want to see previous output (e.g., compiler messages), set the following options in ~/.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
セカンダリスクリーンのスクロールバッファ
When you scroll a pager in a secondary screen(e.g. less
without the -X
option), it may be a good idea to disable the scrollback buffer to be able to scroll in the pager itself, instead of the terminal's buffer: this is default and unchangeable behaviour in konsole and vte-based terminals.
In urxvt, to disable the scrollback buffer for the secondary screen:
URxvt.secondaryScreen: 1 URxvt.secondaryScroll: 0
The above configuration works as expected except when scrolling with a mouse wheel. When you scroll a pager in the secondary screen with the mouse wheel - and there has been something in the scrollback buffer, instead of the pager itself - the scrollback buffer will be scrolled by the mouse wheel. To solve this issue, it is necessary to introduce a new option into rxvt-unicode[1]. A patched rxvt-unicode is available in AUR as rxvt-unicode-better-wheel-scrollingAUR. After installing it, add the following to the configuration file:
URxvt.secondaryWheel: 1
フォントを宣言する方法
URxvt.font: 9x15
is the same as:
URxvt.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1
And, for the same font in bold:
URxvt.font: 9x15bold
is the same as:
URxvt.font: -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1
The complete list of short names for X core fonts can be found in /usr/share/fonts/misc/fonts.alias
(there's also some fonts.alias files in some of the other subdirectories of /usr/share/fonts/
, but as they are packaged separately from the actual fonts, they may list fonts you do not actually have installed). It is worth noting that these short aliases select for ISO-8859-1 versions of the fonts rather than ISO-10646-1 (Unicode) versions, and 75 DPI rather than 100 DPI versions, so you're probably better off avoiding them and choosing fonts by their full long names instead.
URxvt.font: xft:monaco:size=10
Or
URxvt.font: xft:monaco:bold:size=10
A nice method for testing out fonts in a live terminal before committing to the config is by printing escape codes in the terminal, for example:
$ printf '\e]710;%s\007' "xft:Terminus:pixelsize=12"
フォントの間隔
デフォルトでは文字の間隔が広すぎるように感じられる場合、以下のエントリで調整できます:
~/.Xresources
URxvt.letterSpace: -1
-1
で1ピクセル文字の間隔が狭まります。必要ならばもっと狭めることもできます。
カラー
By default, rxvt-unicode is compiled with color support. In addition to the default foreground and background colors, rxvt can display up to 256 colors (plus high-intensity bold/blinking/underlined and any mix of these).
It is also possible to specify the color values of foreground, background, cursorColor, cursorColor2, colorBD, colorUL as a number 0-15, as a convenient shorthand to reference the color name of color0-color15. See #Xresources for details.
カットアンドペースト
CTRL-ALT-C と CTRL-ALT-V でコピーアンドペーストができます。
Rxvt-unicode はデフォルトで PRIMARY
セレクションにロードされているカットバッファを使います。詳しくは Selecting and pasting text を見てください。
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
Matching links can be colored with a chosen foreground or background color, for example blue:
URxvt.matcher.rend.0: Uline Bold fg5
Alternatively, use colorUL
for a #RRGGBB color. This will however color all underlined text, instead of only link matches:
URxvt.colorUL: #4682B4
ヤンクできる URL (マウスを使用しない)
In addition, you can select and open URLs in your web browser without using the mouse.
公式リポジトリから 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 | Enter selection mode. The last URL on your screen will be selected. You can repeat Alt+u to select the next upward URL.
|
k | Select next upward URL |
j | Select next downward URL |
Return | Open selected URL in browser and quit selection mode |
o | Open selected URL in browser without quitting selection mode |
y | Copy (yank) selected URL and quit selection mode |
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
フルスクリーン
AUR パッケージ urxvt-fullscreenAUR をインストールして、urxvt をフルスクリーンにするキーバインディングを設定することができます:
~/.Xresources
... URxvt.perl-ext-common: ..., fullscreen, ... URxvt.keysym.F11: perl:fullscreen:switch ...
フォントサイズを即座に変更
AUR から urxvt-resize-font-gitAUR をインストールして ~/.Xresources
の Perl 拡張に以下を追加してください:
URxvt.perl-ext-common: ...,resize-font,...
そして、以下のようにキーバインディングを追加します:
URxvt.resize-font.smaller: C-Down URxvt.resize-font.bigger: C-Up
For the suggested Ctrl+Shift bindings to work, a default binding needs to be disabled (see discussion here):
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 をコメントアウトしてください。
リモートホスト
If you are logging into a remote host, you may encounter problems when running text-mode programs under rxvt-unicode. This can be fixed by installing rxvt-unicode-terminfo on the remote host or by copying /usr/share/terminfo/r/rxvt-unicode
from your local machine to your host at ~/.terminfo/r/rxvt-unicode
; same for rxvt-unicode-256color.
Some remote systems do not change title automatically unless you specify TERM=xterm. To fix the issue add this line to .bashrc on the remote machine:
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"'
rxvt-unicode を gmrun ターミナルとして使う
Unlike some other terminals, urxvt expects the arguments to -e
to be given separately, rather than grouped together with quotes. This causes trouble with gmrun, which assumes the opposite behavior. This can be worked around by putting an "eval" in front of gmrun's "Terminal" variable in .gmrunrc
:
Terminal = eval urxvt TermExec = ${Terminal} -e
(gmrun uses /bin/sh
to execute commands, so the "eval" is understood here.) The "eval" has the side-effect of "breaking up" the argument to -e
in the same way that $@
does in Bash, making the command intelligible to urxvt.
テンキーの出力がおかしい (例: vim)
Some Debian GNU/Linux users seem to have this problem, although no specific details were reported so far. It is possible that this is caused by the wrong TERM setting, although the details of whether and how this can happen are unknown, as TERM=rxvt should offer a compatible keymap. See the answer to the previous question, and please report if that helped.
However, using the xmodmap program (xorg-xmodmap), you can re-map your number pad keys back.
1. Check the keycode that your numerical keypad (numpad) generates using xev
program.
- Start the
xev
program - Press your number pad keys and look for ... keycode xxx ... in
xev
's output. For example, numpad 1 in my keyboard is also "End" key, that have a 'keycode 87'.
2. Create or modify your xmodmap file, usually ~/.Xmodmap
, with the content representing your keycode.
Example of xmodmap file with number pad keycode:
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. Load your xmodmap file at X session start-up.
For example, in ~/.xinitrc
file add:
... xmodmap ~/.Xmodmap ...
特定のキーの組み合わせが機能しない
Get Alt key to work in terminal を見てください。
文字を表示するときに遅くなる
Some programs like alsamixer and xprop do not perform well with some graphics drivers and in consequence redraw very slowly. The option "skipBuiltinGlyphs" for ~/.Xresources
or the command line option -sbg
may fix this. One possible solution is to add the following to ~/.Xresources
:
URxvt*skipBuiltinGlyphs: true
長い行で動作が遅くなる
The matcher
plugin may be the culprit here. It must match a regex against a line every time the line updates, and if you have a large saveLines
value this can exacerbate the problem by allowing a very large maximum line length.
There are some simple workarounds:
- Reduce
saveLines
- Disable the
matcher
plugin
If neither of those are palatable options, you can compromise by disabling URL matching past a certain cutoff point:
- Copy
/usr/lib/urxvt/perl/matcher
to~/.urxvt/ext/
(creating the directory if necessary) - Edit
~/.urxvt/ext/matcher
, and find themy ($self, $row) = @_;
line in theon_line_update
sub. It should be line 270. - After that line, insert the line
return () if $row < -100;
. This disables URL matching on any line that starts more than 100 rows behind the top of the terminal.
参照
- rxvt-unicode - 公式サイト
- Source Code - Browseable CVS
- rxvt-unicode FAQ - 公式 FAQ
- rxvt-unicode Reference - 公式マニュアルページ
- urxvtperl - 公式 Perl 拡張リファレンス