tmuxでborderがまともに表示できない件
tmuxでTERMをscreenにして使うと、ncursesなどで使われるborderが"qqqqqqqq"の様になってしまう。
これは環境変数NCURSES_NO_UTF8_ACSを0に設定すると直る。
NCURSES_NO_UTF8_ACSの詳細はncursesのmanを参照。
tmuxで環境変数を設定するには以下のように書く。
set-environment -g NCURSES_NO_UTF8_ACS 0
さらに、tmux 1.4からは上記の設定してもborderが正常に表示できない場合がある。
理由はborderにvt100のline drawing charactersではなく、Unicodeの罫線を使うようになったから。
https://bitbucket.org/edogawaconan/tmux/changeset/2661dc9f9551
Unicodeの罫線は日本語のフォントだと全角なのでborderがずれてしまう。
そのため、パッチを書いてvt100のline drawing charactersを使う仕様に戻した。
diff -ur tmux-1.4.orig/tty-acs.c tmux-1.4/tty-acs.c --- tmux-1.4.orig/tty-acs.c 2010-09-19 00:43:53.000000000 +0900 +++ tmux-1.4/tty-acs.c 2011-05-21 16:26:44.263937939 +0900 @@ -81,7 +81,7 @@ struct tty_acs_entry *entry; /* If not a UTF-8 terminal, use the ACS set. */ - if (!(tty->flags & TTY_UTF8)) { + if (1) { if (tty->term->acs[ch][0] == '\0') return (NULL); return (&tty->term->acs[ch][0]); diff -ur tmux-1.4.orig/tty.c tmux-1.4/tty.c --- tmux-1.4.orig/tty.c 2010-12-07 06:57:56.000000000 +0900 +++ tmux-1.4/tty.c 2011-05-21 16:23:06.310937851 +0900 @@ -47,7 +47,7 @@ const struct grid_cell *, const struct grid_utf8 *); #define tty_use_acs(tty) \ - (tty_term_has(tty->term, TTYC_ACSC) && !((tty)->flags & TTY_UTF8)) + (tty_term_has(tty->term, TTYC_ACSC)) void tty_init(struct tty *tty, int fd, char *term)