Skip to content

tmux-eaw-fix -- tmux 2.6 以降において各種問題を修正する野良差分ファイル

License

Notifications You must be signed in to change notification settings

z80oolong/tmux-eaw-fix

Repository files navigation

tmux-eaw-fix -- tmux 2.6 以降において各種問題を修正する野良差分ファイル

概要

tmux は、端末多重化ソフトウェアであり、複数の仮想ウィンドウやペインを同時に操作・表示し、端末セッションの分割や切り替えを可能にします。これにより、単一の端末ウィンドウ内で複数のタスクを効率的に実行できます。

しかし、tmux 2.6 以降では、以下の問題が報告されています:

  • Unicode の東アジア圏の各種文字のうち、いわゆる "◎" や "★" 等の記号文字および罫線文字等、East Asian Width 特性が A(Ambiguous) の文字(以下、East Asian Ambiguous Character)が、日本語環境で適切な文字幅として扱われず、表示が乱れる。
  • Unicode の絵文字の文字幅が正しく扱われない。
  • tmux のペイン分割におけるボーダーラインの罫線文字の幅が適切に処理されず、画面表示が乱れる。
  • GitHub 上の HEAD 版の tmux で追加された SIXEL 画像表示において、パレット数が 0 の画像や ORMODE に対応した SIXEL 画像が正常に表示されない、またはプロセスが異常終了する。

本リポジトリに置かれているファイル tmux-x.y-fix.diff(ここで、x.ytmux の安定版のバージョン番号。以下同様)および tmux-HEAD-xxxxxxxx-fix.diff(ここで、xxxxxxxxGitHub 上の HEAD 版の tmux の最新のコミット ID 番号。以下同様)は、tmux 2.6 以降において上記の問題を解決するために以下の修正を加えた野良差分ファイルです。

なお、本リポジトリは、従来の "tmux 2.5 以降において East Asian Ambiguous Character を全角文字の幅で表示する" という名称から、修正範囲が広範にわたることに伴い、 "tmux 2.6 以降において各種問題を修正する野良差分ファイル][GST1]" と呼称を改めたものです。

差分ファイルの適用とインストール

tmux のソースコードに野良差分ファイルを適用するには、安定版の tmux には tmux-x.y-fix.diff を、GitHub 上の HEAD 版の tmux のソースコードには tmux-HEAD-xxxxxxxx-fix.diff をそれぞれ適用してください。

安定版の tmux のソースコードに野良差分ファイルを適用する場合、tmux のソースコードが置かれているディレクトリで以下のように tmux-x.y-fix.diff を適用し、./configure および make コマンドを用いてビルドおよびインストールすることで、上述の修正が施された tmux が導入されます。

  $ patch -p1 < /path/to/diff/tmux-x.y-fix.diff    #(ここで、/path/to/diff は tmux-x.y-fix.diff が置かれたディレクトリのパス名)
  $ ./configure --prefix=/path/to/install ...      # (ここで、/path/to/install は tmux のインストール先。./configure の引数は適宜追加してください。)
  $ make
  # sudo -s
  # make install

GitHub 上の HEAD 版の tmux のソースコードに野良差分ファイルを適用する場合も、ソースコードが置かれているディレクトリで以下のように最新の差分ファイルを適用し、./configure および make コマンドを用いてビルドおよびインストールすることで、上述の修正が施された tmux が導入されます。ただし、GitHub 上の HEAD 版の tmux のビルドでは、./configure 実行前にシェルスクリプト ./autogen.sh を実行して ./configure を生成する必要があります。

  $ patch -p1 < /path/to/diff/tmux-HEAD-xxxxxxxx-fix.diff    #(ここで、/path/to/diff は tmux-HEAD-xxxxxxxx-fix.diff が置かれたディレクトリのパス名)
  $ sh ./autogen.sh
  $ ./configure --prefix=/path/to/install ...                #(ここで、/path/to/install は tmux のインストール先。./configure の引数は適宜追加してください。)
  $ make
  # sudo -s
  # make install

Homebrew for Linux を用いた差分ファイルの適用とインストール

Homebrew for Linux を導入した端末で野良差分ファイルを適用した tmux をインストールする場合、野良差分ファイルを適用した tmux を導入するための Homebrew for Linux 向け Tap リポジトリ z80oolong/tmux の使用を強く推奨します。

Tap リポジトリ z80oolong/tmux では、最新の安定版の tmux および GitHub 上の最新の HEAD 版の tmux のインストールに加え、旧安定版の tmux のインストールも可能です。

z80oolong/tmux の詳細な使用方法については、z80oolong/tmux の README.md をご覧ください。

AppImage パッケージを用いたインストール

tmux のソースコードへの野良差分ファイルの適用およびビルドが困難な環境の方に向けて、野良差分ファイルを適用した tmux のビルド済み AppImage パッケージを用意しました。ソースコードからのビルド作業が煩雑な場合は、tmux の AppImage パッケージの使用を強く推奨します。

tmux の AppImage パッケージは、以下の URL で配布されています。詳細な使用方法についても、以下の URL をご覧ください。

各種設定について

本節では、野良差分ファイルを適用後に追加される tmux のオプションおよび tmux が参照する環境変数について説明します。

utf8-cjk

East Asian Ambiguous Character の文字幅を設定するオプションです。

例えば、East Asian Ambiguous Character を全角文字幅で表示する場合、tmux の設定ファイル ~/.tmux.conf に以下の設定を追記します。

  set-option -g utf8-cjk on

なお、utf8-cjk の初期値は以下の通りです:

  • 環境変数 LC_CTYPEja*ko*zh* の場合: on を設定します。
  • それ以外の環境変数 LC_CTYPE の場合: off を設定します。

utf8-emoji

UTF-8 で定義される絵文字の文字幅を設定するオプションです。

  • on を指定した場合: UTF-8 の絵文字を全角文字幅で表示します。
  • off を指定した場合: UTF-8 の絵文字を半角文字幅で表示します。

例えば、絵文字を全角文字幅で表示する場合、tmux の設定ファイル ~/.tmux.conf に以下の設定を追記します。

  set-option -g utf8-emoji on

なお、utf8-emoji の初期値は以下の通りです:

  • 環境変数 LC_CTYPEja*ko*zh* の場合: on を設定します。
  • それ以外の環境変数 LC_CTYPE の場合: off を設定します。

pane-border-ascii

tmux のペイン分割で使用する罫線文字に ASCII 文字を使用するかどうかを設定するオプションです。

  • on を指定した場合: ペイン分割の罫線文字に ASCII 文字を使用します。
  • off を指定した場合: 環境に応じて UTF-8 の罫線文字、端末が対応する ACS、または ASCII 文字を使用します。

pane-border-acs

tmux のペイン分割で罫線の描画に ACS を使用するかどうかを設定するオプションです。

  • on を指定した場合: ペイン分割の罫線描画に ACS を使用します。
  • off を指定した場合: 環境に応じて UTF-8 の罫線文字、端末が対応する ACS、または ASCII 文字を使用します。

なお、pane-border-asciipane-border-acs の両方を on に設定した場合、pane-border-acs が優先されます。

環境変数 TMUX_ACS

環境変数 TMUX_ACS に設定する値に応じて、tmux のペイン分割における罫線の描画を以下のように制御します:

  • utf8, utf-8: UTF-8 の罫線文字を使用します。
  • acs: ACS を使用します。
  • ascii: ASCII 文字を使用します。

なお、TMUX_ACS の設定は、pane-border-ascii および pane-border-acs の設定に優先します。

環境変数 TMUX_CONF

tmux 2.6-3.0a では、環境変数 TMUX_CONF に System-wide で使用する tmux の設定ファイル tmux.conf の絶対パスを指定します。

tmux 3.1 以降では、TMUX_CONFtmux が使用する設定ファイル tmux.conf の絶対パスを、読み込む順にセミコロンで区切って指定します。パスには ~/ や環境変数(先頭に $)を使用できます。

TMUX_CONF が指定されない場合、tmux のコンパイル時に指定されるマクロ TMUX_CONF の値が使用されます。この環境変数は主に AppImage パッケージで使用されます。

謝辞

野良差分ファイルの作成にあたり、Markus Kuhn 氏 が提供する East Asian Ambiguous Character 対応の wcwidth(3) 実装(wcwidth.c)を使用しました。心より感謝申し上げます。

また、tmux のペイン分割用ボーダーラインの罫線文字の適切な処理に関する修正を提供してくださった koie-hidetaka 氏 に深く感謝いたします。同氏には、他にも野良差分ファイルに関する有益な助言をいただきました。

最後に、tmux の作者 Nicholas Marriott 氏 をはじめ、tmux の開発コミュニティ および tmux に関わるすべての皆様に心より感謝いたします。

使用条件

本リポジトリの野良差分ファイルは、端末多重化ソフトウェア tmux に適用する差分ファイルであり、以下の各氏が著作権を有し、tmux のライセンスと同様である ISC License に基づいて配布されます:

使用条件の詳細は、本リポジトリに同梱の LICENSE ファイルを参照してください。

About

tmux-eaw-fix -- tmux 2.6 以降において各種問題を修正する野良差分ファイル

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published