rxvt-unicode

提供: ArchWiki
Urxvtから転送)
移動先: 案内検索

関連記事

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
ノート: perl 拡張の urxvt-vtwheelAUR は上記のオプションと衝突します。

フォントを宣言する方法

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
ノート: Xft のフォント名にハイフン(-)が含まれている場合は、バックスラッシュ(\)を2回打ってエスケープしてください。バックスラッシュ1回でエスケープする urxvt の -fn オプションや fc-list の出力とは仕方が異なります。

以下のようにターミナルにエスケープコードを出力することで一時的にフォントをテストすることが可能です:

$ 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 を参照。

ノート: デフォルトでは urxvtXterm と同じ色を使用しますが、ひとつだけ違う色があります。変更するには Xresources に URxvt.color12: rgb:5c/5c/ff を追加してください。

カットアンドペースト

Rxvt-unicode はデフォルトで PRIMARY セレクションにロードされているカットバッファを使います。詳しくは Selecting and pasting text を見てください。

ALT-CTRL-cALT-CTRL-v でコピーアンドペーストができます。

ノート: 選択したテキストは自動的に PRIMARY にコピーされます。rxvt-unicode 9.20 から perl 拡張selection-to-clipboard を使うことでテキストを CLIPBOARD にコピーできます。

クリップボード#クリップボードマネージャの一覧も参照。

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
ノート: この拡張は、上で説明したクリックできる URL拡張を置き換えるため、matcherURxvt.perl-ext のリストから除外してください。

キーコマンド:

キー 説明
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:
ノート: 複数の Perl 拡張を使うなら、次のようにカンマ区切りに並べて記述することができます: URxvt.perl-ext-common:default,matcher,tabbed

}}

インプットメソッドのインライン表示

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マッチを無効化させることもできます:

  1. /usr/lib/urxvt/perl/matcher~/.urxvt/ext/ へコピーします(ディレクトリがない場合は作成してください)
  2. ~/.urxvt/ext/matcher を編集します。サブルーチンである on_line_updatemy ($self, $row) = @_; の行を見付けてください。270行目のはずです。
  3. その行の後に、次の行を追加してください return () if $row < -100; 。これでターミナル上部から100行超える行でのURLマッチ動作を防げます。

参照