xtermのエスケープコード50

xtermのエスケープコード50

~/.bash_profile私の同僚は、多くのサーバーに以下を持っています。

echo -e "\033]50;SetProfile=Production\a"

この方法も機能するので、テキストは重要ではないようです。

echo -e "\033]50;ANY_TEXT\a"

しかし、言葉なしでは動作しません\a

これにより、彼のOSX端末はプロファイル(他の色など)を変更しますが、私のxtermではフォントが大幅に変更されるようです。

以下を使用してリセットしようとしました。

  1. VTフォントを設定するには、Shift +右クリックを使用します。
  2. Shift+マウスの中央クリックを使用して「ソフトリセット」と「完全リセット」を実行します。
  3. さまざまなエスケープコードとコマンドを送信します。

    $ echo -e "\033c"    # Reset terminal, no effect
    $ echo -e "\033[0;m" # Reset attributes, no effect
    $ tput sgr0          # No effect
    $ tput reset         # No effect
    

私の質問:

  1. これがxtermで動作する理由は何ですか、正確に何をしますか?コード50は「予約済み」と表示されますか?
  2. どのようにリセットしますか?

スクリーンショット:

ここに画像の説明を入力してください。

答え1

リストを見るxtermエスケープコードDisplayは(esc)]50;name(bel)xtermのフォントをフォントに設定するか、最初の文字がある場合はフォントメニューnameの項目に設定します。name#

リセットする最も簡単な方法は、xtermのフォントメニュー(Ctrl+右クリック)を使用してを選択することですDefault。または、起動時にxtermが使用するフォントを見つけて、エスケープシーケンスを使用して設定することもできます。

フォントメニューでオプションを見つけることもできますAllow Font Ops。このオプションの選択を解除すると、エスケープシーケンスを使用してフォントを変更できなくなります。

答え2

リセット方法に関する質問に答えるには:

xtermエスケープコードをOSC 50 ... BEL使用してフォントを設定できます(@celtschkの回答を参照)。

フォント名に設定することに加えて、Ctrlと右クリックで使用できるフォントメニューからインデックスに設定することもできます。

メニューインデックス0を使用してデフォルトのフォントにリセットできます。

echo -n "\e]50;#0\a

~からXTerm制御シーケンス - (2014/05/26):

OSC P s ; P t BEL  Set Text Parameters.

      P s = 5 0 → Set Font to P t. These controls may be disabled using the
      allowFontOps resource. If P t begins with a "#", index in the font menu,
      relative (if the next character is a plus or minus sign) or absolute. A
      number is expected but not required after the sign (the default is the
      current entry for relative, zero for absolute indexing).
      The same rule (plus or minus sign, optional number) is used when querying
      the font. The remainder of P t is ignored.
      A font can be specified after a "#" index expression, by adding a space
      and then the font specifier.
      If the "TrueType Fonts" menu entry is set (the renderFont resource),
      then this control sets/queries the faceName resource.

答え3

「予約済み」の説明は混乱しています。OSC 501991年以来、フォント変更の制御順序がxtermに文書化されました。これはリンクですX11R5バージョン

Webページのタイポグラフィが改善される可能性があります。問題を見つけるのに役立つ簡単な修正方法は次のとおりです。

PS=5 0 - >フォントを次に設定プラチナ

これらのコントロールは、次のコマンドを使用して無効にできます。allowFontOpsリソース。もしプラチナ「#」で始まるフォントメニューのインデックス、相対(次の文字がプラスまたはマイナス記号の場合)、または絶対値。記号の後に数字が続くと予想されますが、必須ではありません(デフォルトは相対インデックスの現在のエントリであり、絶対インデックスのゼロです)。フォント(プラス記号またはマイナス記号、オプションの数値)を照会するときに同じ規則を使用します。残りプラチナ無視される。

"#"インデックス式の後にスペースとフォント指定子を追加してフォントを指定できます。

もし「TrueTypeフォント」メニュー項目が設定されました(renderFont リソース)、コントロールセット/クエリfaceName リソース。

問題は最後の段落にある可能性が最も高いです。つまり、TrueTypeフォントを使用しています(ただすべてのテキスト) フォントの外観名をフォントと一致しない値に設定します。 Fontconfig...には有用なエラーチェック機能がなく、アプリケーションに問題が発生したことを知らずに、デフォルトのフォントを使用して「修復」するだけです。これにより、メニューを介してTrueTypeフォント名をリセットできなくなります(フォントメニューの明白なオプションのみが変更されます)。サイズ)。ただし、制御順序はまだ有効です。

OSX端末には有用な文書がないため、この状況を補完します。ただし、一部の機能はさまざまな場所からコピーされました(または他の場所からコピーした可能性があります)。プロファイル変更機能は、バグ報告の変更の一部として、2008年にKDE Konsoleに登場しました。#155801(むしろ興味深い言及xterm 制御シーケンス文書の以前のコピー誰かがそれをウェブページにしました。)実際に502007コード(ハー​​ドコード)に存在します。しかし、2008年の変更と名付けられ、xtermとの衝突について言及しました。OSC 50

関連情報