Xterm
xterm は X Window System の標準のターミナルエミュレータです。様々なカスタマイズができ、多数の役に立つ機能と、少数のあまり役に立たない機能を備えています。
目次
インストール
基本設定
リソースファイルの設定
ターミナルエミュレータとして使いやすさを向上させるオプションを X resources ファイルで設定することができます。オプションのリストは man xterm
を見て下さい。
TERM 環境変数
xterm が TERM
変数を適切に設定できるようにしてください。~/.bashrc
や ~/.bash_profile
などのファイルから TERM 変数を設定してはいけません。ターミナルが自ら適切な TERM
を設定することで、適切な terminfo ファイルが使われるようになります。利用できる terminfo ファイルは xterm と xterm-256color です。
TERM を明示的に設定しなかった場合、xterm は $TERM
を xterm
と設定します。以下のコマンドを xterm の中から実行することで確認できます:
$ echo $TERM $ tset -q
TERM が明示的に設定されていない場合、vim など、プログラムによっては何かキーが押されるまでカラースキームが正しく表示されないことがあります。この問題は以下のようにリソースを設定することで直せます:
xterm*termName: xterm-256color
UTF-8
ロケール が UTF-8 に設定されていることを確認してください。UTF-8 を使用しない場合は、設定によって xterm がロケールに厳密に従うように強制する必要がある場合があります。
XTerm.vt100.locale: true
UTF-8 を強制するには、次のように設定します。
XTerm.vt100.locale: false XTerm.vt100.utf8: true
XTerm は eo.UTF-8
を含むすべての UTF-8 ロケールをサポートしているわけではないためこの設定は、多くの場合必要になります。
'Alt' キーを他のターミナルエミュレータと同じように動作させる
例えば Alt+f
を押すと æ
が挿入されます。Alt
の代わりに ^[
を送るようにするには、(gnome-terminal や konsole のように) 以下を設定します。
XTerm.vt100.metaSendsEscape: true
バックスペースキーの修正
Arch Linux では、xterm は backspace が押されると ^H
キーを送信します。これは Emacs の Ctrl+H
キーコンビネーションを壊してしまいます。
回避策として、リソースに以下を追加して下さい。
XTerm.vt100.backarrowKey: false XTerm.ttyModes: erase ^?
キーバインド
xterm は端末を操作するための一連の "アクション" を定義しています。例えば、 copy-selection()
, hard-reset()
, scroll-back()
などです。これらのアクションは translations
リソースを使用してマウスとキーの組み合わせにマッピングできます。例えば、ウィンドウを最大化/復元するために Ctrl+M
と Ctrl+R
をマップすることができます。
XTerm.vt100.translations: #override \n\ Ctrl <Key>M: maximize() \n\ Ctrl <Key>R: restore()
#override
は、これらのキー割り当てが既存のキー割り当てを上書きすることを示します (カスタムキー割り当てでは、ほとんどの場合、これが必要です。) 各バインドはエスケープシーケンス n
で区切らなければなりません。もし、リテラルな改行を挿入したい場合は、それもエスケープする必要があります(<coden>ac となります。)動作の完全なリストと多くの例は xterm(1) の KEY BINDINGS セクションを参照してください。
スクロール
xterm ウィンドウの一番下に新しい行が書き込まれると、一番上の古い行は消えます。マウスホイールや Shift+PageUp
または Shift+PageDown
のキーコンビネーション、あるいはスクロールバーを使うことで画面から消えた行をスクロールして見ることができます。
デフォルトでは、1024行が保存されます。保存する行数は saveLines
リソースで変更できます:
XTerm.vt100.saveLines: 4096
スクロールの設定を変更する他の X リソースとしては jumpScroll
(デフォルトでは true
) や、multiScroll
と fastScroll
があります (どちらもデフォルトでは false
) 別のスクリーン の中をスクロールするには、alternateScroll
を true
に設定してください。
スクロールバー
スクロールバーはデフォルトでは表示されません。これを有効にしたり、リソース設定を通じて外観を調整することができます ("scrollbar" の大文字と小文字の違いに注意してください)
XTerm.vt100.scrollBar: true XTerm.vt100.scrollbar.width: 8
他のスクロールバーリソースについては、xterm(1) § Scrollbar Resources を参照してください。
スクロールバーの使い方は普段使用するようなスクロールバーとは異なっています。
- 下にスクロール:
- スクロールバーを左マウスボタンでクリック
- スクロールバーの つまみ (サム) の下部を中マウスボタンでクリック
- 上にスクロール:
- スクロールバーを右マウスボタンでクリック
- スクロールバーの つまみ (サム) の上部を中マウスボタンでクリック
- 上下どちらかに移動:
- 中マウスボタンで つまみ をクリックして "クリックアンドドラッグ"
メニュー
Arch Linux の xterm ではツールバーやメニューバーは無効にしてコンパイルされています。メニューは xterm ウィンドウの中で Ctrl+MouseButton
を押すことでポップアップして表示されます。メニューアイテムで設定できることは、大抵コマンドラインオプションやリソースの設定でも可能です。
メニューオプションは以下で説明します。
メインのオプションメニュー
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 Screen
– vim や less などのターミナルアプリケーションを使うときに、新しい画面が開きます。メインの VT ウィンドウは非表示になりますが、メモリ上に残ります。このメニューオプションを有効にすると、メインウィンドウを見ることができるようになりますが、メインウィンドウでコマンドを実行することはできません。メインウィンドウからテキストを選択・コピーすることは可能です。
Show Tek Window
とSwitch to Tek Mode
– Tektronix 4014 は CAD やプロットアプリケーションで使われていた1970年代のグラフィックスターミナルです。plotutils に含まれているコマンドラインプログラムgraph
やアプリケーション gnuplot が xterm の Tek エミュレーションを使うことができます。ただし、普通の人はデータを図に記すのに近代的なディスプレイオプションを使うでしょう。下の #Tek 4014 デモンストレーション を見て下さい。
VT フォントメニュー
Ctrl + 右マウス
- XLFD フォントを使用する場合、最初の7つのメニューアイテムが xterm ウィンドウで使われるフォントフェイスやフォントサイズを変更します。Xft フォントを使う場合、フォントサイズだけが変わります。フォントフェイスは変わりません。
- 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 Clipboard
や selectToClipboard
リソースを使うことで PRIMARY と CLIPBOARD の使用を切り替えることができます。
PRIMARY と CLIPBOARD
上記の設定では PRIMARY または CLIPBOARD どちらかを使うことを選択できますが、両方使いたい場合、.Xresources
に以下のように記述する必要があります:
XTerm*VT100.translations: #override <Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0)
テキストの選択
初めて使う人は、マウスの左ボタンで クリック&ドラッグ することでテキストを選択できます。 ダブルクリックすると、単語が選択されます。単語は、連続したアルファベット文字とアンダースコア、または基本正規表現(BRE)[A-Za-z_]
で定義されます。 トリプルクリックは行を選択し、タブ 文字は通常複数の スペース 文字としてコピーされます。
もう一つのテキスト選択の方法は、特に複数の全画面をコピーするときに便利です。
- 選択したい部分の始点で左クリックします。
- 選択範囲の終端が見える位置までスクロールする。
- 選択範囲の終点で右クリック。
ハイライトされた選択範囲は、右クリックによって拡大・縮小することができます。
xterm ウィンドウ内の任意の場所で左クリックすると、選択したテキストを消去することができます。
カラー
xtermのデフォルトは、白の 背景色 に黒の 前景色 です。 前景色と背景色を逆にするには、リソースを設定することで逆転できます。
XTerm.vt100.reverseVideo: true
あるいは、リソースを使用して、前景色と背景色 (および最初の 16 個の端子色) を直接変更することもできます。
XTerm.vt100.foreground: white XTerm.vt100.background: black XTerm.vt100.color0: rgb:28/28/28 ! ... XTerm.vt100.color15: rgb:e4/e4/e4
カラースキームについては Terminal Colour Scheme Screenshots のフォーラムスレッドに様々な設定例が載っています。
フォント
デフォルトフォント
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
フォントが TrueType であるかどうかに応じて、リソースでフォントを指定できます:
XTerm.vt100.faceName: Liberation Mono:size=10:antialias=false XTerm.vt100.font: 7x13
テストするには、コマンドラインでフォントを設定することもできます: faceName
の場合は -fa
、font
の場合は -fn
。両方の種類のフォントを設定した場合は、VT フォントメニュー から TrueType フォント
を切り替えることで、2 つのフォントを切り替えることができます。次のリソースを使用してデフォルトを選択することもできます
! start with TrueType fonts disabled XTerm.vt100.renderFont: false
太字フォントと下線フォント
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