標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

環境変数から得る端末情報おぼえがき

昔は TERMCAP/TERMINFO でターミナルで使うべき制御コードが得られた。現在の端末はほぼ VT100 互換なので、その役割は薄れている。

一方、まだ自動では判別できない端末情報があり、一部のライブラリ・アプリケーションは次の環境変数からそれを取得している。

$RUNEWIDTH_EASTASIAN

Unicode の 「曖昧幅 (Ambiguous Width)」文字を、2セル幅として扱うか1セル幅として扱うかを指定する。

$RUNEWIDTH_EASTASIAN 意味
"1" 2セル幅
"1" 以外の1文字以上 1セル幅
未定義もしくは "" 指定なし

$NO_COLOR

色付きターミナル出力を無効化する指定

$NO_COLOR 意味
未定義もしくは "" 指定なし
1文字以上指定 無効化する

$COLORFGBG

「文字色:背景色」という値が GNOME Terminal や Konsole など、一部の X11 端末で自動設定される場合がある。例:

  • COLORFGBG="15;0" - 前景=白 (15), 背景=黒 (0)
  • COLORFGBG="0;15" - 前景=黒 (0), 背景=白 (15)

ただし、普通に端末のデフォルトの前景色、背景色を使うだけならば、ESC[39mESC[49m を使えばよいので、前景色・背景色以外の色を決める時の参考情報くらいしか使えない。

端末種類を判別する環境変数

  • VSCODE_PID - 定義されていたら Visual Studio Code 内シェル
  • WT_SESSION とWT_PROFILE_ID - 定義されていたら Windows Terminal
  • TERM_PROGRAM - WezTerm なら WezTerm
  • TERMINAL_NAME - contour なら contour