rxvt-unicode

提供: ArchWiki
2021年9月1日 (水) 21:10時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎~/.Xresources の作成: 節タイトルを修正)
ナビゲーションに移動 検索に移動

関連記事

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
ノート: 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 は 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-cALT-CTRL-v でコピーアンドペーストができます。

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

選択した内容を 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 拡張

クリックできる 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" を置いてください (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 マッチを無効化させることもできます:

  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 マッチを防げます。

参照