Xterm

提供: ArchWiki
2022年3月10日 (木) 06:24時点におけるKgx (トーク | 投稿記録)による版 (→‎キーバインド: 微修正)
ナビゲーションに移動 検索に移動

xtermX Window System の標準のターミナルエミュレータです。様々なカスタマイズができ、多数の役に立つ機能と、少数のあまり役に立たない機能を備えています。

インストール

xterm パッケージを インストール して下さい。

基本設定

リソースファイルの設定

ターミナルエミュレータとして使いやすさを向上させるオプションを X resources ファイルで設定することができます。オプションのリストは man xterm を見て下さい。

TERM 環境変数

xterm が TERM 変数を適切に設定できるようにしてください。~/.bashrc~/.bash_profile などのファイルから TERM 変数を設定してはいけません。ターミナルが自ら適切な TERM を設定することで、適切な terminfo ファイルが使われるようになります。利用できる terminfo ファイルは xtermxterm-256color です。

TERM を明示的に設定しなかった場合、xterm は $TERMxterm と設定します。以下のコマンドを xterm の中から実行することで確認できます:

$ echo $TERM
$ tset -q

TERM が明示的に設定されていない場合、vim など、プログラムによっては何かキーが押されるまでカラースキームが正しく表示されないことがあります。この問題は以下のようにリソースを設定することで直せます:

xterm*termName: xterm-256color

UTF-8

UTF-8 の適切なロケール設定がされていることを確認してください。以下の行をリソースファイルに追加することで xterm は全てのデータを UTF-8 でエンコードされていると解釈します:

XTerm*locale: true

'Alt' キーの修正

キーボードショートカットに Alt キーを使う場合、リソースファイルに以下の設定をしてください:

XTerm*metaSendsEscape: true

バックスペースキーの修正

Arch Linux では、xterm は backspace が押されると ^H キーを送信します。これは EmacsCtrl+H キーコンビネーションを壊してしまいます。 回避策として、リソースに以下を追加して下さい。

XTerm.vt100.backarrowKey: false
XTerm.ttyModes: erase ^?

キーバインド

xterm は端末を操作するための一連の "アクション" を定義しています。例えば、 copy-selection(), hard-reset(), scroll-back() などです。これらのアクションは translations リソースを使用してマウスとキーの組み合わせにマッピングできます。例えば、ウィンドウを最大化/復元するために Ctrl+MCtrl+R をマップすることができます。

XTerm.vt100.translations: #override \n\
    Ctrl <Key>M: maximize() \n\
    Ctrl <Key>R: restore()

#override は、これらのキー割り当てが既存のキー割り当てを上書きすることを示します (カスタムキー割り当てでは、ほとんどの場合、これが必要です。) 各バインドはエスケープシーケンス n で区切らなければなりません。もし、リテラルな改行を挿入したい場合は、それもエスケープする必要があります(<coden>ac となります。)動作の完全なリストと多くの例は xterm(1)KEY BINDINGS セクションを参照してください。

ヒント: キーバインドを切り替えて使うこともできます。man ページの keymap() アクションを参照してください。

スクロール

xterm ウィンドウの一番下に新しい行が書き込まれると、一番上の古い行は消えます。マウスホイールや Shift+PageUp または Shift+PageDown のキーコンビネーション、あるいはスクロールバーを使うことで画面から消えた行をスクロールして見ることができます。

デフォルトでは、1024行が保存されます。保存する行数は saveLines リソースで変更できます:

Xterm*saveLines: 4096

スクロールの設定を変更する他の X リソースとしては jumpScroll (デフォルトでは true) や、multiScrollfastScroll があります (どちらもデフォルトでは false)。別のスクリーンの中をスクロールするには、alternateScrolltrue に設定してください。

スクロールバー

スクロールバーはデフォルトでは表示されません。メニューセレクションやコマンドラインオプションを使ったり、あるいはリソースを設定することで表示させることができます。ウィンドウの左右に表示させることができ、リソース設定を弄ることで見た目も変えることができます。

スクロールバーの使い方は普段使用するようなスクロールバーとは異なっています。

  • 下にスクロール:
– スクロールバーを左マウスボタンでクリック。
– スクロールバーのつまみ (サム) の下部を中マウスボタンでクリック。
  • 上にスクロール:
– スクロールバーを右マウスボタンでクリック。
– スクロールバーのつまみ (サム) の上部を中マウスボタンでクリック。
  • 上下どちらかに移動:
– 中マウスボタンでつまみをクリックして"クリックアンドドラッグ"。

メニュー

Arch Linux の xterm ではツールバーやメニューバーは無効にしてコンパイルされています。メニューは xterm ウィンドウの中で Ctrl+MouseButton を押すことでポップアップして表示されます。メニューアイテムで設定できることは、大抵コマンドラインオプションやリソースの設定でも可能です。

ヒント: ポップアップメニューウィンドウが小さく表示される場合、リソースファイルに xterm*geometry: 80x32 などと設定しているのが原因です。この設定だと xterm のメインウィンドウが80列32行で起動するのではなく、メニューウィンドウが80ピクセルx32ピクセルになります。次のように置き換えてください: xterm*VT100.geometry: 80x32

メニューオプションは以下で説明します。

メインのオプションメニュー

Ctrl + 左マウス

  • Secure Keyboard を設定すると xterm ウィンドウだけがキーストロークを受け取れるようになり、他のアプリケーションがキーストロークを傍受することはできなくなります。実行すると画面の色が反転します。色が反転しない場合、Secure Keyboard モードが有効になっていません。このオプションの制限については xterm の man ページの "SECURITY" セクションを読んで下さい。
  • Allow SendEvents は他のプロセスが xterm ウィンドウに打鍵やマウスのイベントを送信できるようにします。セキュリティ上のリスクがあるため、何の効果があるのかよくわからないときは有効にしないでください。
  • Log to File – ログファイルの名前は Xterm.log.hostname.yyyy.mm.dd.hh.mm.ss.XXXXXX になります。このファイルには印字された出力とマウスの移動が全て記録されます。ログ出力はセキュリティリスクになることもあります。
  • 6つの Send *** Signal メニューアイテムはキーボードが動作しなくなったような場合を除いて、基本的に使うことはありません。HUP, TERM, KILL は xterm ウィンドウを終了します。KILL はできるだけ使わないでください。
  • Quit メニューアイテムは xterm ウィンドウを終了します。HUP シグナルを送信するのと同じです。キーボードで Ctrl+d を押すか、または exit を入力することでも xterm は終了できます。

VT オプションメニュー

Ctrl + 中マウス

  • Select to Clipboard – 通常、選択されたテキストは PRIMARY に保存され、中マウスボタンを使うか Shift+Insert で貼り付けることができます。このオプションをオンにすると、選択されたテキストは CLIPBOARD を使うようになり、xterm ウィンドウで選択したテキストを Ctrl+v で GUI アプリケーションに貼り付けることができます。対応する XTerm リソースは selectToClipboard です。
  • Show Alternate Screenvimless などのターミナルアプリケーションを使うときに、新しい画面が開きます。メインの VT ウィンドウは非表示になりますが、メモリ上に残ります。このメニューオプションを有効にすると、メインウィンドウを見ることができるようになりますが、メインウィンドウでコマンドを実行することはできません。メインウィンドウからテキストを選択・コピーすることは可能です。
ヒント: 代替画面で実行中のプロセスを一時停止してから再開すると、Show Alternate Screen を使用するよりも多くの機能が提供されます。bash シェルでは、Ctrl+z を押すとプロセスが中断され、fg コマンドを発行するとプロセスが再開されます。
  • Show Tek WindowSwitch to Tek ModeTektronix 4014 は CAD やプロットアプリケーションで使われていた1970年代のグラフィックスターミナルです。plotutils に含まれているコマンドラインプログラム graph やアプリケーション gnuplot が xterm の Tek エミュレーションを使うことができます。ただし、普通の人はデータを図に記すのに近代的なディスプレイオプションを使うでしょう。下の #Tek 4014 デモンストレーション を見て下さい。

VT フォントメニュー

Ctrl + 右マウス

  • XLFD フォントを使用する場合、最初の7つのメニューアイテムが xterm ウィンドウで使われるフォントフェイスやフォントサイズを変更します。Xft フォントを使う場合、フォントサイズだけが変わります。フォントフェイスは変わりません。
ヒント: プロセスを監視したいが、ターミナルウィンドウに大きな画面スペースを割きたくない場合に、UnreadableTiny が便利です。 例えば、長時間のコンパイル処理で、処理が完了したことだけを確認したいような場合に使用します。
  • XLFD フォントの名前を使うときに、Selection で PRIMARY (または CLIPBOARD) セレクションに保存されたフォントの名前に切り替えられます。

Tek オプションメニュー

Tek Window から Ctrl + 中マウス

最初のセクションのオプションは Tek ウィンドウのフォントサイズを変えられます。2番目のセットのオプションは Tek エミュレーションウィンドウとメインウィンドウ、VT ウィンドウのフォーカスを移動したり、Tek ウィンドウを終了・非表示にするのに使います。

コピーアンドペースト

まず、xterm(または他のアプリケーション)でマウスを使ってテキストをハイライトすると、コピーするテキストが選択され、マウスの中ボタンをクリックすると、ハイライトされたテキストがペーストされます。また、キーの組み合わせ Shift+Insert でも貼り付けられますが、これは xterm 内に限られます。

PRIMARY または CLIPBOARD

デフォルトでは、X で動作する xterm などのアプリケーションは、選択されたテキストを PRIMARY セレクションと呼ばれるバッファにコピーします。PRIMARY セレクションは短命です。他のテキストが選択されるとすぐに新しい PRIMARY セレクションによってテキストは置き換えられます。アプリケーションによっては (Shift+Insert ではなく) 中マウスで PRIMARY セレクションを貼り付けることができますが、PRIMARY を全く貼り付けることができないアプリケーションも存在します。

テキストをコピーするときは CLIPBOARD セレクションと呼ばれるバッファも使われます。CLIPBOARD のテキストは長命で、ユーザーによって上書きされるまで保存されます。Ctrl+c, Ctrl+x, Ctrl+v を使ってテキストのコピー・切り取り・貼り付けをするアプリケーションはこの CLIPBOARD を使っています。

他のセレクションを選択するとすぐコピーしたテキストが消失してしまう PRIMARY セレクションの儚さが鬱陶しいと感じられるかもしれません。Xterm では #VT オプションメニューSelect to ClipboardselectToClipboard リソースを使うことで PRIMARY と CLIPBOARD の使用を切り替えることができます。

PRIMARY と CLIPBOARD

上記の設定では PRIMARY または CLIPBOARD どちらかを使うことを選択できますが、両方使いたい場合、.Xresources に以下のように記述する必要があります:

XTerm*VT100.translations: #override <Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0)

テキストの選択

初めて使う人は、マウスの左ボタンで クリック&ドラッグ することでテキストを選択できます。 ダブルクリックすると、単語が選択されます。単語は、連続したアルファベット文字とアンダースコア、または基本正規表現(BRE)[A-Za-z_] で定義されます。 トリプルクリックは行を選択し、タブ 文字は通常複数の スペース 文字としてコピーされます。

もう一つのテキスト選択の方法は、特に複数の全画面をコピーするときに便利です。

  1. 選択したい部分の始点で左クリックします。
  2. 選択範囲の終端が見える位置までスクロールする。
  3. 選択範囲の終点で右クリック。

ハイライトされた選択範囲は、右クリックによって拡大・縮小することができます。

xterm ウィンドウ内の任意の場所で左クリックすると、選択したテキストを消去することができます。

カラー

Xterm のデフォルトでは白い背景に黒字のテキストが使われます。前景と背景の色は VT オプションメニュー-rv コマンドラインオプションを使うことで逆転させることができます。

$ xterm -rv

もしくは、以下の X resources パラメータでも色を反転させられます (設定後にリソースを再読み込みするのを忘れないで下さい):

XTerm*reverseVideo: on

Xterm の前景色 (文字の色) と背景色はコマンドラインから設定することができます。それぞれ -fg-bg オプションを使います。

xterm -fg PapayaWhip -bg "rgb:00/00/80"

前景色と背景色だけでなく、最初の16色のターミナルの色も X resources ファイルで設定できます:

XTerm*foreground: rgb:b2/b2/b2
XTerm*background: rgb:08/08/08
XTerm*color0: rgb:28/28/28

! ...Lines omitted...

XTerm*color15: rgb:e4/e4/e4
ノート: X ライブラリを使用するアプリケーションの色は、さまざまな方法で指定することができます。いくつかの色は、割り当てられた名前で指定することができます。 {emacs または vim がインストールされていれば、 /usr/share/emacs/*/etc/rgb.txt または /usr/share/vim/*/rgb.txt で色名のリストとその 10 進数の RGB 値を確認することができます。 色は 16 進数の RGB 値で rgb:RR/GG/BB というフォーマットで指定することもできますし、古い構文で推奨されていない #RRGGBB という構文で指定することもできます。PapayaWhip の色は rgb:ff/ef/d5 と同じで、これは #ffefd5 と同じです。色の構文についてのより完全な説明は xorg-docsman(7)X を参照してください。

カラースキームについては Terminal Colour Scheme Screenshots のフォーラムスレッドに様々な設定例が載っています。

ヒント: 多くの人は、アプリケーションクラスやアプリケーションインスタンスを指定せずに、X リソースファイルで色を指定します
*foreground: rgb:b2/b2/b2
*background: rgb:08/08/08
上記の例では、これらのリソースを使用するすべてのXlib アプリケーション(xclock、xfontsel など)の前景色と背景色の値を設定しています。これは、統一された配色を実現するための優れた簡単な方法です。

フォント

デフォルトフォント

Xterm のデフォルトフォントは X Logical Font Description エイリアスで fixed という名前のビットマップフォントです。大抵は以下のフォントになります:

-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-?

このフォントは 6x13 という名前でもエイリアスされていて、ユニコードのグリフに対して驚くほど広いカバー範囲を持っています。 デフォルトの "TrueType" フォントは mono という名前の 14-point フォントになります。 使用される FreeType フォントは、このコマンドで見つけることができます。

$ fc-match mono

フォントはコマンドラインから指定できます。ビットマップフォントの名前を指定するときは -fn オプションを、Xft フォントを指定するときは -fa を使います。以下の設定では #VT フォントメニューTrueType Fonts で2つのフォントを切り替えることができます。

$ xterm -fn 7x13 -fa "Liberation Mono:size=10:antialias=false"

永続的に設定したい場合、デフォルトフォントを X resources ファイルで設定します:

xterm*faceName: Liberation Mono:size=10:antialias=false
xterm*font: 7x13
ノート: リソースファイルで faceName が設定されている場合にコマンドラインオプションの -fn が使えなくなるというバグが xterm には昔から存在しています。コマンドラインでリソース renderFontfalse に設定するのが一つの解決方法です。
$ xterm -fn 8x13                             # If this command does not set the font,
$ xterm -fn 8x13 -xrm "*renderFont:false"    # set the 'renderFont' resource to 'false'.
さらに、ターミナルウィンドウの #VT フォントメニュー から TrueType Fonts を切り替えることもできます。

太字フォントと下線フォント

xterm で XLFD 名を使用する場合、イタリック体のフォントは下線文字として表示されます。 TrueType フォントは斜体の書体を使用する必要があります。

コマンドライン、-fb、または boldFont リソースで太字フォントを指定しない場合、xterm は通常のフォントに一致する太字フォントを探そうとします。 一致するフォントが見つからない場合、太字フォントは通常フォントを overstriking することによって作成されます。

CJK フォント

中国語や日本語、韓国語で使われる全角文字が含まれているフォントは多くありません。これらの言語を使う場合は urxvt など別のターミナルエミュレータを使うほうが良いでしょう。

xterm における CJK のビットマップの XLFD フォントの使用は落とし穴がたくさんあります。CJK を表示するときは faceNameDoublesize リソースを利用して TrueType フォントを使うほうがずっと楽です。以下の例では通常フォントとして DejaVu Sans Mono を全角フォントとして WenQuanYi Bitmap Song を使用します:

xterm*faceName: DejaVu Sans Mono:style=Book:antialias=false
xterm*faceNameDoublesize: WenQuanYi Bitmap Song
xterm*faceSize: 8

ヒントとテクニック

自動透過

transset-dfAUR パッケージと Xcompmgr などのコンポジットマネージャをインストールして、以下の行を ~/.bashrc に追加します:

[ -n "$XTERM_VERSION" ] && transset-df -a >/dev/null

これで、xterm でシェルを起動し、コンポジットマネージャーが起動している場合は、毎回、xterm ウィンドウが透明になります。 transset-df の前にあるテストは XTERM_VERSION が定義されていない場合に transet が実行されないようにするものです。この方法でシェル以外のプログラムを起動した場合、ターミナルが透明にならないことに注意してください。この機能が必要であれば、これを回避できる可能性があります。

アプリケーションごとの透過設定 も参照。

緊急ベルの有効化

以下の行を ~/.Xresources ファイルに追加します:

xterm*bellIsUrgent: true

フォントのヒント

太字や斜体の代わりに色を使う

フォントサイズを小さくしている場合、太字や斜体の文字を読むのは困難です。太字や斜体、下線を無効にして代わりにテキストに色を付けることができます。例:

! Forbid bold font faces; bold type is light blue.
XTerm*colorBDMode: true
XTerm*colorBD: rgb:82/a4/d3
! Do not underscore text, underlined text is white.
XTerm*colorULMode: true
XTerm*colorUL: rgb:e4/e4/e4

行間の調整

場合によっては行間が狭すぎたり、広すぎるように感じられることもあるでしょう。例えば、DejaVu Sans Mono を使っていると、アンダーバー記号が CJK の文字にぶつかったり、次の行のカーソルに被さってしまうことがあります。行間 (植字工はと呼ぶ) は scaleHeight リソースを使うことで調整できます。例えば、行間を広げるには:

XTerm*scaleHeight: 1.01

scaleHeight に設定できる値は 0.9 から 1.5 までの間の数値で、デフォルトは 1.0 です。

黒いボーターの削除

場合によって Xterm には黒い縁が表示されますが、以下の行を ~/.Xresources ファイルに追加することで消すことができます。

xterm*borderWidth: 0

Tek 4014 デモンストレーション

plotutils をインストールしている場合、xterm の Tektronix 4014 エミュレーションを使って plotutils パッケージのテストファイルを表示することができます。#VT オプションメニュー のメニューアイテム Switch to Tek Mode を使うか次のコマンドで xterm を起動することで Tek ウィンドウを開いて下さい:

$ xterm -t -tn tek4014

完全に表示されると、PS1 は正しく表示されなくなります。新しいウィンドウで、次のコマンドを入力してください:

cat /usr/share/tek2plot/dmerc.tek

Tek ウィンドウに世界地図が表示されます。同じディレクトリにある他の *.tek ファイルを表示することもできます。Tek ウィンドウを終了するには、xterm メニューを使います。

トラブルシューティング

スクロールでチラつきが発生する

警告: ダブルバッファを使用すると非ビットマップフォントが正しく表示されなくなることがあります。

ABS を使って --enable-double-buffer フラグを指定して xterm をリビルドしてください:

./configure --prefix=/usr \
     ...
     --with-utempter \
     --enable-double-buffer

詳しくは Xterm modifications を参照。

設定が適用されない

i3 などの一部のアプリケーションでは、xterm の代わりに uxterm のラッパーを呼び出すことがあります。このような場合は、uxterm と同じ設定を追加することで解決することができます。

UXTerm.vt100.reverseVideo: true

設定ファイルに重複した項目を書かない方が良い場合は、ワイルドカードによるマッチングを使用することができます。

*.vt100.reverseVideo: true

参照