もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

WSLを使ってWindowsでmikutterを動かす。

愛機MacBook Air(Mid 2012)の調子が悪くなったので、メインマシンを買い置きしていたThinkpad X1 Carbon(2016)に変更しました。*1

画面が広い!重量も軽い!Windows10も結構使いやすくなってきてる!と概ね満足だったのですが、唯一の懸念事項がmikutter。
mikutterはバージョンアップを重ねるごとにWindowsで動かすのが難しくなってきてるんで、これからWindowsで暮らしていく上で、伴侶であるみくったーちゃんと添い遂げることは出来るのかしらと。

そういえば、最近流行りのWSLでmikutterの動作報告があったなぁ。試してみるかと設定してみました。

結論としてはすごくいい感じ。macOSX11版)と同等の使い勝手が得られました。

f:id:moguno:20171008151829p:plain:w400

WSLのインストール

ここはいろんなサイトで手順が公開されているので端折ります。

(1)コルタナたんに「更新」と伝え「更新プログラムのチェック」を起動する。
「開発者向け」にある「開発者モード」を有効にする

(2)コルタナたんに「コントロール」と伝え「コントロールパネル」を起動する。
「プログラムと機能」の「Windowsの機能の有効化または無効化」から
Windows Subsystem for Linux(Beta)」をインストールする。

(3)コルタナたんに「bash」と伝え「Bash on Windows on Windows」を起動する。
Ubuntuのインストールが始まる。)

コルタナたんは仕事のできる子。

(4)bashが起動したら、環境を最新化しておく。

sudo apt-get update
sudo apt-get dist-upgrade

mikutterのインストール

今回は手抜きでUbuntuリポジトリにいるmikutterを使います。腕に覚えがある人はgitで最新版を取ってきてインストールしてください。なんだかんだでUbuntuなので、ハマり要素はかなり少ないと思います。

sudo apt-get install mikutter

日本語フォントのインストール

こちらを参考にしてGoogle謹製のnotoフォントをインストールします。

ぽぬぽぬ: Bash on Ubuntu on Windows + XサーバでLXDEを起動

ついでに絵文字(ttf-ancient-fonts)も入れておきましょう。

sudo apt-get install noto-fonts-hinted noto-fonts-cjk ttf-ancient-fonts

日本語入力システムのインストール

ここではちょっと懐かしいuimanthyをインストールします。*2

あれやこれやZakki: bash on ubuntu on windows(WSL)でGUIを立ち上げて日本語入力までやる

sudo apt-get install uim uim-xim uim-anthy

ブラウザ起動シェルスクリプトの作成

mikutterには、アカウントの認証時やURLをクリックしたときに起動するWebブラウザが必要です。
WSL側にfirefoxとかをインストールしてもいいのですが、せっかくのWindowsなのでEdgeとかIEを使いたいなと。

WSLでは、Windows用のプログラムを拡張子.exeまで含めて指定すると、そのプログラムが起動できるので、それでサクッと解決・・・と思ったのですが、EdgeもIEも実は.exeファイルは存在せずシェルエクステンションみたいな概念に昇華されてしまっているので、この方法はとれません。

なので、コマンドプロンプト(cmd.exe)を経由して、Windowsの既定のブラウザを起動するようにします。

/opt/mikutter-wsl/bin/start

#!/bin/sh
ESCAPED_URI=`echo "$1" | sed s/\&/^\&/g`
cmd.exe /C start "$ESCAPED_URI"

実行権限を付けておきましょう。

chmod 755 /opt/mikutter-wsl/bin/start

Xサーバのインストール

Windows用のXサーバはけっこう豊富に存在しますが、ここではVcXsrvを選択しました。理由はたまたま目についたからです。
この子どうやら高速なことで有名みたいです。実際サクサク動きます。

https://sourceforge.net/projects/vcxsrv/

VcXsrvの起動スクリプトの作成

VcXsrvには起動時に任意のコマンドを実行する機能があるので、mikutterをダイレクトに起動するようにします。
下記のXMLファイルを作成します。LocalProgramがキモの部分です。

mikutter.xlaunch

<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow"
ClientMode="StartProgram"
LocalClient="True"
Display="0"

LocalProgram="bash -c &quot;DISPLAY=:0 GTK_IM_MODULE=uim mikutter&quot; &gt; /dev/null 2&gt;&amp;1"

RemoteProgram="xterm"
RemotePassword=""
PrivateKey=""
RemoteHost=""
RemoteUser=""
XDMCPHost=""
XDMCPBroadcast="False"
XDMCPIndirect="False"
Clipboard="True"
ClipboardPrimary="True"
ExtraParams=""
Wgl="True"
DisableAC="False"
XDMCPTerminate="False"/>

実体参照が入ってて分かりにくいですが、デコードするとこんな感じになります。

bash -c "DISPLAY=:0 GTK_IM_MODULE_uim mikutter" > /dev/null 2>&1

標準出力、標準エラー出力を/dev/nullに捨てるのがポイントです。
そうしないとmikutterがコンソールにwarningとか出力するたびに、VcXsrvが「大丈夫?コマンド打つ?」ってダイアログを出してくるので。

起動してみる

さっき作ったmikutter.xlaunchをダブルクリックしてください。いつものmikutterが起動してくると思います。

f:id:moguno:20171008151850p:plain:w400

mikutterが起動したらさっき作ったブラウザを起動するシェルスクリプトを設定します。

(1)ウインドウ右下のネギレンチボタンを押す。
(2)「表示」の「URLを開く方法」に「/opt/mikutter-wsl/bin/start」と入力して下さい。

f:id:moguno:20171008151914p:plain:w400

これで完成です。Windowsでもレッツておくれ!

なお、日本語入力の切り替えはShift + スペースで行います。慣れましょう。

*1:使用頻度の低い公務用PCをスライドさせた感じっす。

*2:トレンディな日本語入力システムである(ibus|fcitx) + mozcは動きませんでした。Macでも定番のX用日本語入力システムはuimだったと思うので、そんなものなのでしょう。