2016年10月22日土曜日

bash on ubuntu on Windows とMintty/wsltty

bash on ubuntu on Windows を日本語環境( ja_JP.UTF-8 ) で使いたいなら、Mintty/wsltty を使うと幸せかも知れません。という話。

Big Sky :: Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。
http://mattn.kaoriya.net/software/bow/20160824234928.htm

で紹介されている内容が、今は
wsltty: https://github.com/mintty/wsltty
インストーラーを使うだけでほぼ出来上がりますので、導入がぐっと楽になっています。
動作比較はこんな感じ。



左下が Mintty/wsltty をインストールし、 Bash on UoW in Mintty を実行してvimを起動した場合。
右上は標準の端末からvimを起動した場合。どちらもVLゴシックをフォントに指定しています。
w3mでgoogleを見た場合と合わせてみると、Minttyのほうが日本語表示の崩れが少ないことが分かります。素晴らしい。



端末上で開いているemacsに、Windowsの日本語入力機能を用いて日本語を入力することもできます。テキストのコピペも出来そう?



さらに、sixel にも対応しているので、こんな表示も出来ますね。

( sixel については、『Sixel Graphicsを活用したアプリケーションの御紹介』


gnuplot 5.0.5 を ./configure --with-bitmap-terminals で make すると、terminal として sixel を選択出来るようになります。描画範囲の背景は白で塗りつぶさないようなので、端末背景は白ないし明るい色にしないと綺麗に見えないのがネックでしょうか。暗い背景だと線やラベルが見えません。



terminalに sixel がない場合は、libsixel 内にある img2sixel を用いて、png画像などを sixel で出力してやればよいでしょう。右側がその例なのですが、outputにコマンドを指定して、フィルタとして使う場合、 gnuplot が終了しないと標準出力に書き出されたsixel画像が表示されませんので、ちょっと不便かも知れません。

libsixel は、ubuntu 14.04LTS (trusty) ではパッケージ化されていないので、自力導入する必要があるのがやや面倒ですね。

sixel 対応は、Windows側でXサーバプログラムを用意するなど、いろいろ面倒な bash on UoW にとって、古くて新しい解決方法になってくれそうな気がします。

それにしても bash on Ubuntu on Windows, trusty のサポート期限が2019年までなので当分これでいくと思うんですが、次はどうするつもりなんだろう。 systemd 対応が立ちはだかってる気がするんだけど、なんとかするのかな。