>>UTF-8/EUC-JP 混在

UTF-8ベース EUC-JP対応

CygwinをUTF-8をベースにEUC-JPに対応した環境を設定する。

EUC-JPの過去環境やソース、スクリプトが多量にある為、Solarisマシンは EUC-JPを基本に、LinuxマシンはUTF-8を基本に動作させている。
徐々に移行する予定だがそれまでは混在の環境が必要だ。 
 
とはいってもCygwinの場合、デスクトップ環境がある訳ではないので、実際はターミナルで区別するしかない。
Cygwinの標準ターミナルminttyのオプションでロケールを指定してターミナルを開き利用する。

ホーム下にある .inputrcは以下の様に設定。
$ cd $HOME
$ vi .inputrc

# Japanese
set input-meta on
set convert-meta off
set meta-flag on
set output-meta on

minttyターミナルの基本設定は以下の様にした。

ファイル: $HOME/.minttyrc
BoldAsFont=no
CursorType=block
Transparency=high
Font=Migu 1M
FontHeight=9
Columns=110
Rows=34
Scrollbar=none
Locale=
Charset=
OpaqueWhenFocused=no
CursorColour=0,0,28
BackgroundColour=0,0,0
ScrollbackLines=1000
ForegroundColour=118,101,239
FontSmoothing=default

 
minttyでのロケール指定方法は
オプション
:--option locale={ロケール指定}
で任意のロケールで開くことが出来る。

ローケールを指定しない場合は、現在のロケールが開くターミナルに反映されて開かれる。

要はUTF-8の指定で開いたminttyターミナルはそのターミナルから新たにターミナルを開くとUTF-8で開かれる。
EUC-JPについても同様。ロケールを切り替えたい時のみ上記オプションを指定すれば良い。

 minttyターミナルの操作を簡単にするためのスクリプトファイル。

$ vi mt    
#!/bin/bash

export LANG=$LANG
export LC_ALL=$LANG
export LC_MESSAGES=$LANG
export TERM_TYPE=$LANG

MACHINE_NAME=`uname -n`
OS_NAME=`uname -sr`

GREP=`which grep`
PS=`which ps`
AWK=`which gawk`

Fn_Help()
{
    echo "usage: mintty.sh [option]"
    echo "[option]"
    echo "  -h,--help                ... help messages"
    echo "  -t,--trans:{0|1|glass|f} ... Transparency mode(on/off/glass/forcused)"
    echo "  -g,--glass               ... Glass Transparency"
    echo "  -o,--off                 ... Transparency Off"
    echo "  -f,--forcused            ... Transparency Hight and forcused"
    echo " "
    echo "  -u,--utf8                ... UTF-8 mode"
    echo "  -e,--ecu                 ... ECU-JP mode"
    echo " "
    echo "  -0: center pos"
    echo "  -1: left pos"
    echo "  -2: right pos"
    echo "  -3: center bottom pos"
    echo " "
    exit 1
}

Fn_TERM()
{
    OPTS="-s $1 -p $2 $3"
    #echo $OPTS
    /usr/bin/mintty $OPTS > /dev/null 2>&1 &
}

OPT_POS=""
IN_OPTS=""

for i in $*
do
   case $i in
   --h*|-h*)   Fn_Help; ;;
   --utf*|-u*)
        export LANG=ja_JP.UTF-8
        export LC_ALL=$LANG
        export LC_MESSAGES=$LANG
        export TERM_TYPE=$LANG
        IN_OPTS="--option locale=$LANG $IN_OPTS"
        ;;
    --euc*|-e*)
        export LANG=ja_JP.eucJP
        export LC_ALL=$LANG
        export LC_MESSAGES=$LANG
        export TERM_TYPE=$LANG
        IN_OPTS="--option locale=$LANG $IN_OPTS"       
        ;;
    --t*|-t*)
        trflag=`echo "$i" | sed 's/-\{1,\}t[a-z]\{0,\}://'`
        case $trflag in
        1|on|true|H*|h*)
            IN_OPTS="--option Transparency=Higt $IN_OPTS"
            ;;
        0|off|false)
            IN_OPTS="--option Transparency=Off $IN_OPTS"
            ;;
        g*|G*)
            IN_OPTS="--option Transparency=Glass $IN_OPTS"
            ;;
        f*|F*)
            IN_OPTS="--option Transparency=High --option OpaqueWhenFocused=yes $IN_OPTS"
            ;;
        esac
        ;;
    -g|--g*|-G*|--G*)
        IN_OPTS="--option Transparency=Glass $IN_OPTS"   
        ;;
    -o*|--o*|-O*|--O*)
        IN_OPTS="--option Transparency=Off $IN_OPTS"   
        ;;
    -f*|--f*|-F*|--F*) 
        IN_OPTS="--option Transparency=High --option OpaqueWhenFocused=yes $IN_OPTS"
        ;;
    -0)  OPT_POS="$OPT_POS 0"    ;;
    -1)  OPT_POS="$OPT_POS 1"    ;;
    -2)  OPT_POS="$OPT_POS 2"    ;;
    -3)  OPT_POS="$OPT_POS 3"    ;;
    esac
done
if [ -z "$OPT_POS" ]; then OPT_POS="0"; fi

for i in $OPT_POS
do
    POS="+220+0";   
    SIZE="138x50";
    case $i in
        # 1366x768
        "0")  POS="280,0";    SIZE="130,48";;
        "1")  POS="2,230";    SIZE="130,33";;
        "2")  POS="500,0";    SIZE="130,46";;
        "3")  POS="370,80";   SIZE="130,44";;
        *)    POS="280,0";    SIZE="130,48";;
    esac
    Fn_TERM "$SIZE" "$POS" "$IN_OPTS";
done
exit 0

$ chmod +x mt   

このスクリプトをコマンドとすることにより、簡単にUTF-8とEUC-JPの環境を使い分けることができる。

ただターミナル上では見分けが付かないので以下の様に、$HOME/.bashrcファイル設定でタイトルバーにロケール名表示と、EUC-JPの場合はプロンプトに":ja"を表示させることにした。



図:EUC-JPで minttyターミナルを開いた場合


$ cd $HOME
$ vi .bashrc
    

…省略…

# プロンプト
if [ $UID -eq 0 ]; then
    PS1='[\[\033[41m\]\u\[\033[0m\]\[\033[42m\]@\h\[\033[0m\] \W]\\$ '
else
    if [ "$TERM" = "xterm" ]; then
        if [ "$LANG" = "ja_JP.eucJP" ]; then
            PROMPT_COMMAND='echo -ne "\033]0;[EUC-JP] ${USER}@${HOSTNAME%%.*} :${PWD/#$HOME/~}\007"'       
            PS1='[\u@\[\033[44m\]\h\[\033[0m\]\[\033[33m\]:ja\[\033[0m\] \W]\\$ '
        else
            PROMPT_COMMAND='echo -ne "\033]0;[UTF-8] ${USER}@${HOSTNAME%%.*} :${PWD/#$HOME/~}\007"'
            PS1='[\u@\[\033[44m\]\h\[\033[0m\] \W]\\$ '
        fi
    else
        PS1='[\u@\h \W]\\$ '
    fi
fi

…省略…

# aliasの読み込み
if [ "$LANG" = "ja_JP.eucJP" -o "$LANG" = "ja" ]; then
    if [ -f "$HOME/.alias.euc-jp" ]; then
        source "$HOME/.alias.euc-jp"
    fi
else
    if [ -f "$HOME/.alias.utf-8" ]; then
        source "$HOME/.alias.utf-8"
    fi
fi

…以下省略…






inserted by FC2 system