Emacsをきれいにしたかった — ターミナルで24ビットカラーを使う
- Emacsコミュニティは活発で、LSPを通じてモダンな自動補完やインライン型チェック機能を提供している。
- グラフィカル環境では Emacs は自動的に24ビットカラーをサポートするが、ターミナルではそうではない。
ANSIエスケープコード
- 初期のハードウェア端末は互換性のない制御コードをそれぞれ提供していたが、ANSIがこれを標準化した。
- SGR(Select Graphics Rendition) によって、さまざまな文字表示属性を設定できる。
3・4・8ビットカラー
- カラーが導入された当初は8種類の基本色があり、のちに明るい色が追加されて合計16色になった。
- 1999年に Todd Larason が xterm に256色をサポートするパッチを追加した。
24ビットカラー対応はどこから来たのか?
- 8ビットおよび24ビットカラーを互換ターミナルへ送る方法はよく文書化されている。
- 70年代のANSI標準化プロセスと90年代の ISO 8613-6 (ITU T.416) によって、38 と 48 は拡張された前景色・背景色モードとして定義された。
Terminfo
- Terminfo はターミナル機能のデータベースを提供し、TERM 環境変数によってプログラムにどの terminfo レコードを使うべきかを知らせる。
xterm-256color と xterm-direct はそれぞれ256色と RGB カラーをサポートする。
TERM設定: セミコロン問題
- 多くのターミナルではセミコロン構文しかサポートしていないため、TERM が正しく設定されていることを確認する必要がある。
Emacs設定
- Emacs は truecolor サポートを検出する方法を文書化している。
RGB は Emacs の基本的なカラー機能で、まず setf24 と setb24 の文字列を探す。
入れ子になったターミナル
- 一般的なワークフローでは、複数のターミナルを入れ子にして使う。
- すべてのレイヤーが24ビットカラーを理解し、正確に変換できなければならない。
グラフィカルなターミナルエミュレーター
- ほとんどのターミナルは TERM を妥当なデフォルト値に設定するか、上書きできる。
ssh
ssh は TERM の値をリモートホストへ渡す。
tmux
tmux 内では tmux-direct のような TERM を設定する必要がある。
GN⁺の見解
- この記事で最も重要なのは、ターミナル環境でも高品質な色を使いたいというユーザーの要求と、それを可能にする技術的な進歩である。
- 24ビットカラー対応は、開発者がより良いユーザー体験を提供できるようにする重要な機能であり、特にコードエディタのようなツールで視覚的な使いやすさを大きく向上させる。
- この記事はターミナルと Emacs のユーザーにとって興味深く役立つ内容であり、ターミナルベースの作業環境でも優れた視覚体験を求めるユーザーに有用な情報を提供する。
1件のコメント
Hacker Newsのコメント
ターミナルアプリケーションの複雑さに驚きを示し、iTermやKittyのようなターミナルアプリケーションの開発者に感謝を述べている。
個人的には、アプリケーション側のターミナルコードを正確に合わせるより、ターミナルアプリごとに16色パレットを調整するほうが簡単だと考えている。
.Xdefaultsファイルとユーザー定義テーマの.elファイルで色を設定するコード例を示している。lsの出力などの色も改善されると述べている。著者が
export COLORTERM=truecolorを知っていれば、もっと良い体験ができただろうと推測している。Emacsを使う際に必ずしもターミナルを使う必要はなく、MacOS、Windows、X.org、Wayland向けの「グラフィカル」フロントエンドを使えることを強調している。
1970年代のターミナルエミュレータ、エディタ、OSのバージョンを使う本番システムによって、コンピューティングは方向を見失ってしまったのかもしれないと指摘している。
Cool Retro Termを使ってEmacsをもっと格好よく見せたい、と冗談めかして述べている。
Windows 10のコマンドプロンプトで標準のANSIエスケープシーケンスが動作し、24ビットカラーもうまく機能することを発見した。
Emacsがvim/neovimと比べてGUIサポートを第一級の機能として扱っているのが、最も優れている点だと述べている。
色を最小限に使うEmacs設定を使っているのでこの機能は使わないだろうが、それでも非常に楽しく読めたと述べている。
標準が高額で縛られているため、人々が購入せずにこうした回り道をせざるを得ないのは本当に恥ずべきことだと批判している。