Xterm

提供: ArchWiki
2017年10月12日 (木) 23:15時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「Tips and tricks」を「ヒントとテクニック」に置換)
ナビゲーションに移動 検索に移動

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

基本設定

リソースファイルの設定

ターミナルエミュレータとして使いやすさを向上させるオプションを 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

スクロール

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 ウィンドウは非表示になりますが、メモリ上に残ります。このメニューオプションを有効にすると、メインウィンドウを見ることができるようになりますが、メインウィンドウでコマンドを実行することはできません。メインウィンドウからテキストを選択・コピーすることは可能です。
ヒント: Suspending the process running in the Alternate Screen and then resuming it provides more functionality than using Show Alternate Screen. With a bash shell, pressing Ctrl+z suspends the process; issuing the command fg then resumes it.
  • Show Tek WindowSwitch to Tek ModeTektronix 4014 は CAD やプロットアプリケーションで使われていた1970年代のグラフィックスターミナルです。plotutils に含まれているコマンドラインプログラム graph やアプリケーション gnuplot が xterm の Tek エミュレーションを使うことができます。ただし、普通の人はデータを図に記すのに近代的なディスプレイオプションを使うでしょう。下の #Tek 4014 デモンストレーション を見て下さい。

VT フォントメニュー

Ctrl + 右マウス

  • XLFD フォントを使用する場合、最初の7つのメニューアイテムが xterm ウィンドウで使われるフォントフェイスやフォントサイズを変更します。Xft フォントを使う場合、フォントサイズだけが変わります。フォントフェイスは変わりません。
ヒント: Unreadable and Tiny are useful if you wish to keep an eye on a process but do not want to devote a large amount of screen space to the terminal window. An example use might be a lengthy compilation process when you only want to see that the operation completes.
  • XLFD フォントの名前を使うときに、Selection で PRIMARY (または CLIPBOARD) セレクションに保存されたフォントの名前に切り替えられます。

Tek オプションメニュー

Tek Window から Ctrl + 中マウス

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

コピーアンドペースト

First, highlighting text using the mouse in an xterm (or alternatively another application) will select the text to copy, then clicking the mouse middle-button will paste that highlighted text. Also the key combination Shift+Insert will paste highlighted text, but only within an 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)

テキストの選択

The new user usually discovers that text may be selected using a "click-and-drag" with the left mouse button. Double-clicking will select a word, where a word is defined as consecutive alphabetic characters plus the underscore, or the Basic Regular Expression (BRE) [A-Za-z_]. Triple-clicking selects a line, with a "tab" character usually copied as multiple "space" characters.

Another way of selecting text, especially useful when copying more than one full screen, is:

  1. Left-click at the start of the intended selection.
  2. Scroll to where the end of the selection is visible.
  3. Right-click at the end of the selection.

You do not have to be precise immediately with the right-click – any highlighted selection may be extended or shortened by using a right-click.

You can clear any selected text by left-clicking once, anywhere within the xterm window.

カラー

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
ノート: Colors for applications that use the X libraries may be specified in many different ways. Some colors can be specified by assigned names. If emacs or vim has been installed, you can examine /usr/share/emacs/*/etc/rgb.txt or /usr/share/vim/*/rgb.txt to view the list of color names with their decimal RGB values. Colors may also be specified using hexadecimal RGB values with the format rgb:RR/GG/BB, or the older and not encouraged syntax #RRGGBB. The color PapayaWhip is the same as rgb:ff/ef/d5, which is the same as #ffefd5. See man(7) X from xorg-docs for a more complete description of color syntax.

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

ヒント: Many people specify colors in their X resources files without specifying an application class or application instance:
*foreground: rgb:b2/b2/b2
*background: rgb:08/08/08
The above example sets the foreground and background color values for all Xlib applications (xclock, xfontsel, and others) that use these resources. This is a nice, easy way to achieve a unified color scheme.

フォント

デフォルトフォント

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

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

This font, also aliased to the name 6x13, has remakably wide coverage for unicode glyphs. The default "TrueType" font is the 14‑point font matched by the name mono. The FreeType font that will be used can be found with this command:

$ 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 を切り替えることもできます。

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

Italic fonts are shown as underlined characters when using XLFD names in xterm. TrueType fonts should use an oblique typeface.

If you do not specify a bold font at the command line, -fb, or through the boldFont resource, xterm will attempt to find a bold font matching the normal font. If a matching font is not found, the bold font will be created by "overstriking" the normal font.

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-df パッケージと Xcompmgr などのコンポジットマネージャをインストールして、以下の行を ~/.bashrc に追加します:

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

Now, each time you launch a shell in an xterm and a composite manager is running, the xterm window will be transparent. The test in front of transset-df keeps transet from executing if XTERM_VERSION is not defined. Note that your terminal will not be transparent if you launch a program other than a shell this way. It is probably possible to work around this if you want the functionality.

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

緊急ベルの有効化

以下の行を ~/.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 を参照。

参照