[Creaters Update & Ubuntu 16.04環境対応版!]Bash on Ubuntu on WindowsでGUIのアプリケーションを実行し、日本語入力するまで

[2017/10/18追記]Fall Creators Updateにて、WindowsストアからUbuntuがインストール可能になりました。また、現状WSL-Terminalなしでも、快適にBashを運用できるようになっています。従って、この記事の情報は古いものになっています。

今回は、最新アップデートでUbuntu16.04LTS相当になったBash on Ubuntu on Windowsを利用して、快適にBashコマンドを使ったり、GUIアプリケーションを動かしたりします。

なお、今回の記事は、以前ほぼ同名で投稿した記事をWindows10 Creaters Update、並びにUbuntu16.04LTS環境に対応させ、大幅に加筆修正を加えたものです。以前の記事の制作に当たって、Tonopぶらり様を参考にさせていただいています。

①Bash on Ubuntu on Windowsをインストールします。(新規に設定する場合)

まず、「設定」を起動し、更新とセキュリティ→開発者向けから、「開発者モード」を有効化します。

この設定後、一度再起動したほうがよいようです。
続いて、コントロールパネルの「プログラムの追加と削除」を開きます。なお、バージョン1703からは、スタートボタン右クリックでコントロールパネルが呼び出せないようですので、Cortanaに探してもらいましょう。

「Windowsの機能の有効化または無効化」をクリックします。UACが反応する場合は、許可を与えます。

「Windows Subsystem for Linux (Beta)」にチェックを入れ、OKをクリックします。
処理が終わったら、再起動を求められるので再起動します。

再起動したらスタートメニューからBash on〜を起動し、初期設定を行います。

※Bash on Ubuntu on Windowsを再構成します。(以前のバージョンで使っていた場合)

Windowsのコマンドプロンプトから、
> lxrun  /uninstall /full
> lxrun /install
を実行すると、環境が再構築されます。前からwsl-terminalを使っていた場合、②の展開の手順は飛ばせます。

②wsl-terminalをインストール

こちらから最新版をダウンロードし、適当な場所に展開します。
open-wsl.exeをマウス右ボタンでドラッグ&ドロップし、ショートカットを作成。最後に"-l"を追加します(ログインシェルとして実行するために必要な手順)。

作成したショートカットをダブルクリックして起動します。右クリックメニューから「スタートにピン止め」すると起動が簡単になります。SmartScreenなどが反応した場合は適宜対処して、許可を与えます。
起動したら、ウィンドウ右上をクリックし、Options→Textから日本語表示ができる好みのフォントに変更します。

ここまで設定すると、こんな感じのBashが表示されていると思います。
$ sudo apt update
$ sudo apt upgrade
を実行しましょう。(かなり時間がかかります)

ここまでで、BashからUbuntu16.04を操作できるようになりました。
コマンド中心に操作する人で、byobuが好きな人はbyobu-enableとか打つと次回から自動で立ち上がって幸せになれます。元に戻すのはbyobu-disableです。
上の状態をもとに、byobu-enableでbyobuを起動したもの

③GUIアプリケーションを動かしてみる

XなGUIアプリケーションを動かし、そこでの日本語入力に対応させます。
まず、現状この方法はサポート外ですし、安定性もかなり低いです。動かないものも多く、お遊び程度に考えたほうがいいかもしれません、ということだけはお伝えしておきます。

まず、WindowsにVcXSrvをインストールして起動、スタートアップにも登録しておきます(登録方法:外部サイト)。

続いて、Ubuntu側での設定を行います。今回は例として、leafpad(テキストエディタ)を動作させてみたいと思います。依存関係で色々入ります。
$ sudo apt install leafpad uim uim-xim uim-anthy fonts-vlgothic
$ export DISPLAY=localhost:0.0
$ leafpad

これで、一時的にleafpadが起動します。
(mozcの依存関係はかなり面倒臭いので、とりあえずanthyにしています。)

ターミナルのnano・vimか、先程起動したleafpadのどちらでも構いませんが、linux側のエディタ(Windowsのメモ帳不可)で.bashrcを開いて、以下のような文字列を追加します。ターミナルで動作するエディタなら、(端末側で)コピーアンドペーストも可能です。

export LC_MESSAGES=ja_JP.UTF-8
export LC_IDENTIFICATION=ja_JP.UTF-8
export LC_COLLATE=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
export LC_MEASUREMENT=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
export LC_TIME=ja_JP.UTF-8
export LC_NAME=ja_JP.UTF-8
#
export DISPLAY=localhost:0.0
export XIM=uim
export XMODIFIERS=@im=uim
export UIM_CANDWIN_PROG=uim-candwin-gtk
#export UIM_CANDWIN_PROG=uim-candwin-qt
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
#
if [ $SHLVL -eq 1 ]; then
  uim-xim &
fi

この設定は、簡単に言うとbash起動時に「言語を日本語に設定するよ」「localhostを通してxサーバ(この場合はVcXSrv)を使ってGUIアプリケーションを表示するよ」「GUI環境での日本語入力に(先程インストールした)uimを使うよ」って感じのものです。つまり、この設定を行えばexport DISPLAY=localhost:0.0をGUI起動前に毎回打ち込む必要がなくなります。

続いて、日本語キーボードの方は半角/全角キーが使えるように設定を変更します。.uimを開いて(なければ作成)、以下のものを入力します。
(define default-im-name 'anthy)
(define-key generic-on-key? '("Henkan_Mode" "zenkaku-hankaku" "<Control> " "<Control>\\"))
(define-key generic-off-key? '("Muhenkan" "zenkaku-hankaku" "<Control> " "<Control>\\"))
(define-key anthy-extend-segment-key? '("<Control>o"))
(define-key anthy-shrink-segment-key? '("<Control>i"))

これで日本語入力を半角/全角キーで切り替えられるようになりました。bashを開き直して、
$ leafpad
とすればleafpadが起動するはずです。 
leafpad on Windowsの図。

ここまでで、とりあえずbashのコマンドラインを運用でき、GUIアプリケーションで日本語入力ができる環境が出来上がったと思います。なお、GUIアプリケーションにはうまく動作しないものもありますので、十分ご注意ください。

・おまけ(前回の記事の最期についていたものです。改めて検証はしていません)

wsl-terminalに同包されているもの
  • cbwin→wsl-terminalインストールディレクトリetcフォルダのwsl-terminal.confでuse_cbwin=1に変更。bash上からwindowsの実行ファイルがある程度呼び出せるものらしいです。
  • vim.exe→wsl-terminalインストールディレクトリのvim.exeでWSL上のvim(cmd版)を直に起動できます。関連付けて使いたいときに便利です。(実装を見れば他のアプリケーションにも応用可能かもしれない。Windowsアプリケーションのように扱えれば便利だと思う)
  • run-wsl-file.exe→シェルスクリプトなどに関連付けると直にbashで開けます。
  • toolsフォルダ内add-open-wsl-here-menu.js→エクスプローラの右クリックメニューに、WSLでそのディレクトリをカレントディレクトリとしてBashを起動するメニューを追加します。イメージとしてはNautilusの「端末で開く」ですね。

コメント

このブログの人気の投稿

LinuxでLINEを使う(2018年版)

AndroidのWebブラウザー「Via」に感動した話

UbuntuなどのLinux上でOnedrive上のファイルを使う