Xterm

提供: ArchWiki
2023年11月25日 (土) 00:41時点におけるKgx (トーク | 投稿記録)による版 (→‎ヒントとテクニック: X11 の入力スヌーピングからの保護を翻訳して追加)
ナビゲーションに移動 検索に移動

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 に設定されていることを確認してください。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 キーを送信します。これは 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.vt100.saveLines: 4096

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

スクロールバー

スクロールバーはデフォルトでは表示されません。これを有効にしたり、リソース設定を通じて外観を調整することができます ("scrollbar" の大文字と小文字の違いに注意してください)

XTerm.vt100.scrollBar: true
XTerm.vt100.scrollbar.width: 8

他のスクロールバーリソースについては、xterm(1) § Scrollbar Resources を参照してください。

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

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

メニュー

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のデフォルトは、白の 背景色 に黒の 前景色 です。 前景色と背景色を逆にするには、リソースを設定することで逆転できます。

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
ノート: 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

フォントが TrueType であるかどうかに応じて、リソースでフォントを指定できます:

XTerm.vt100.faceName: Liberation Mono:size=10:antialias=false
XTerm.vt100.font: 7x13

テストするには、コマンドラインでフォントを設定することもできます: faceName の場合は -fafont の場合は -fn。両方の種類のフォントを設定した場合は、VT フォントメニュー から TrueType フォント を切り替えることで、2 つのフォントを切り替えることができます。次のリソースを使用してデフォルトを選択することもできます

! start with TrueType fonts disabled
XTerm.vt100.renderFont: false

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

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

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

CJK フォント

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

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

XTerm.vt100.faceName: DejaVu Sans Mono:style=Book:antialias=false
XTerm.vt100.faceNameDoublesize: WenQuanYi WenQuanYi Bitmap Song
XTerm.vt100.faceSize: 8

ヒントとテクニック

自動透過

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

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

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

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

緊急ベルの有効化

ベルの文字がウィンドウマネージャーに緊急事態を知らせるようにするには、次のように設定します:

XTerm.vt100.bellIsUrgent: true

フォントのヒント

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

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

! disable bold font faces, instead make text light blue.
XTerm.vt100.colorBDMode: true
XTerm.vt100.colorBD: rgb:82/a4/d3
! disable underlined text, instead make it white.
XTerm.vt100.colorULMode: true
XTerm.vt100.colorUL: rgb:e4/e4/e4
! similarly use colorIT for italics

書式設定の情報については、カラー を参照してください。

行間の調整

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

XTerm*scaleHeight: 1.01

scaleHeight に設定できる値は 0.9 から 1.5 までの間の数値で、デフォルトは 1.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 メニューを使います。

X11 の入力スヌーピングからの保護

メインのオプションメニュー から "Secure Keyboard" モードを有効にするのは不便な場合があります。代わりに、キーバインド を使用して secure() アクションを呼び出すことができます:

Ctrl Alt <Key>S: secure()

トラブルシューティング

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

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

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

フォントサイズメニューでフォントサイズが変更されない

フォントサイズの変更で問題が発生した場合は、xorg-mkfontscale パッケージをインストールしてください。

参照