2014-09-16T11:38:35+09:00

ターミナルウインドウのプロキシアイコンと日本語を含んだディレクトリ名

Mac OS X 10.7 Lion から、ターミナルウインドウにカレントディレクトリを表示するプロキシアイコンが導入されましたね。いまさらながら、名前に日本語を含んだディレクトリがカレントディレクトリの場合、正常に表示されないことに気づきました。

プロキシアイコンを設定する仕組みは、専用のエスケープシーケンスが用意されていて、そのエスケープシーケンスとカレントディレクトリのURLを標準出力に出力すると設定されます。これを実行するコマンドが、PROMPT_COMMANDというシェルのプロンプトが更新されるたびに評価される特殊な変数に設定されています。これらの設定は、/etc/bashrc で行われています。

カレントディレクトリの URL は、パスにURLとして使ってはいけない文字がある場合はパーセントエスケープしなければいけないのですが、/etc/bashrc の中では、スペースしかエスケープしてくれないのが問題です。日本語も、エスケープしてやれば、プロキシアイコンに日本語ディレクトリが表示されるようです。

次の、スクリプトを ~/.bashrc に加えて、PROMPT_COMMAND を上書きしてしまえば、幸せになれます。

if [ "$TERM_PROGRAM" == "Apple_Terminal" ] && [ -z "$INSIDE_EMACS" ]; then
                update_terminal_cwd() {
                    local ESCAPED_PATH=`ruby -ruri -e 'print URI.escape(ARGV[0])' "$PWD"`
                    local PWD_URL="file://$HOSTNAME$ESCAPED_PATH"
                    printf '\e]7;%s\a' "$PWD_URL"
                }
                PROMPT_COMMAND="update_terminal_cwd"
fi