Hatena::Groupmoudamekamoshirenai

onumeraneの日記

2009/03/21 (Sat)

mintty-0.3.8

| 22:59

mintty の色が見づらいと嘆いていたら、mintty 端末中で ANSI カラーが変えられるようになったらしい。Setting ANSI Colors - MinTTY Discussion | Google グループが発端。

16 進の文字がそれぞれ ANSI カラーに対応していて、echo -e "¥e]4;a;#ff00ff¥a" などとすると変えられるそう。0-7 がそれぞれ black, red, green, yellow, blue, cyan, magenda, white で、8-f がその太字。

#!/bin/sh

ESC="\e]4;"

echo -e \
        "${ESC}0;#000000\a" \
        "${ESC}1;#ff0000\a" \
        "${ESC}2;#00ff00\a" \
        "${ESC}3;#ffff00\a" \
        "${ESC}4;#0000ff\a" \
        "${ESC}5;#ff00ff\a" \
        "${ESC}6;#00ffff\a" \
        "${ESC}7;#bbbbbb\a" \
        "${ESC}8;#666666\a" \
        "${ESC}9;#ff9999\a" \
        "${ESC}a;#99ff99\a" \
        "${ESC}b;#ffff99\a" \
        "${ESC}c;#9999ff\a" \
        "${ESC}d;#ff99ff\a" \
        "${ESC}e;#99ffff\a" \
        "${ESC}f;#ffffff\a"

でも screen が動いている端末上だと何も変わらず、screen を実行する前に mintty 端末で実行させないとならないらしい。上のスクリプトに exec screen -R -U などと追加して、例えば /bin/mintty_ansi.sh に置いて mintty sh /bin/mintty_ansi.sh とすると screen 上でも色が変わった。けど、もっとスマートな方法ないのかな。