0. 前提
- 64-bit Windows 10で、OSビルドが14393より後ろであること(詳しくは参考のURL)
1. GUI環境を起動できるようにする手順
Windows Subsystem for Linuxを入れる
Windows Power shell に以下を入力する。自動的に再起動が始まる。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
再起動後Ubuntu をmicrosoft.comからインストールする。
VcXsrvを入れる
VcXsrvをsourceforgeから入手しインストールする。
xfceをUbuntuに入れる
ubuntuを起動してアカウントを作る。
xfceをインストールする
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xfce4-terminal
sudo apt-get install xfce4
もしapt-get install xfce4がうまく行かなければsudo apt-get install xfce4 --fix-missing
をする。
sudo apt-get clean
をしてやり直すと直るかも? 0.5GB程度、< 1時間くらいかかった。
ちゃんと入っていれば、sudo apt-get install xfce4
を行うと更新の必要がないよと言ってくれる。
ubuntuの環境変数の設定をする
必要ならエディタを導入する。たとえばsudo apt install emacs
など。nanoやvimも入っている。
export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1
を.bashrcに書き込み、ubuntuを立ち上げなおすかsource .bashrc
をする。
もしcygwinなどで0.0を使っている場合かちあってしまうので、適当に1.0や2.0などにする。
Xlaunchを起動する
VcXsrvをインストールできていればwindowsキーを押してxlaunchと打てば起動できる。
cygwinなどを入れていると違うxlaunchが起動するかもしれないが、そっちでも問題はなさげ。
'One Window'を選択し、Display numberは0とする。もしDISPLAY=:1.0
にしている場合は1にする。
後は「次へ」を押していき、最後の「完了」の所でsave configurationをしておく。
黒い画面がでればOK
xfceを起動する
Ubuntuに戻り、startxfce4
をするとさっきの黒い画面にGUI環境が現れる。
2. ubuntu起動時に設定したXを行う方法
~/.bashrcに、すでに起動しているかどうかを判定して、何らかの方法でXを起動し、startxfce4
をすればよい。
Xlaunchを使う方法
windowsのシステム環境変数の変更
windowsのユーザー名が2バイト文字の人は、保存したconfig.xlaunchをダブルクリックで開こうとすると"fatal error cannot open a log file"などというエラーがでてxlaunchを起動できないことがある。
システム環境変数のTMPとTEMPに入っているusernameを処理できないのが問題のようである。"環境変数を編集"から、TMPとTEMPの変数値を2バイト文字の入っていないディレクトリに設定する(TEMPだけでよい?)。良い方法が分からないので自己責任になるが、ディレクトリを作ったうえでC:\TEMPORAL\TMPと設定した。
うまくできていればダブルクリックで開くことが出来る。なお"cannot establish listening socket"のエラーは既にそのソケット使って開いているから開けませんよというエラーなので問題はない。
ubuntuからwindowsのアプリケーションを開く方法
`cmd.exe /C start `
で開くことが出来る。このとき¥マークはエスケープ文字\になるので\の記述は適宜修正する必要がある。
例えば`C:\foo\bar\config.xlaunch`を開きたいときは次のようになる。
NG cmd.exe /C start C:\foo\bar\config.xlaunch
OK cmd.exe /C start 'C:\foo\bar\config.xlaunch'
OK cmd.exe /C start C:\\foo\\bar\\config.xlaunch
XLaunchを使わないで自動化する方法
上の方法ではubuntu側から起動しているかどうかの判定がしづらい。
それにubuntuからcmd.exe /C start
ってなんかいけてない感ある。
そこでコンフィグファイルは使わず、
インストールしたVcXsrvディレクトリ内にあるvcxsrv.exeをオプション付きで起動することにした。
vcxsrv.exeをubuntuから実行する。
インストールしたVcXsrvはデフォルトだと/mnt/c/Program\ Files/Vcxsrv/
に入っている(パスは環境によるかも)。
/mnt/c/Program\ Files/Vcxsrv/vcxsrv.exe -help
でオプションの一覧が現れるのを確認したら、.bashrc`の最後に次を追加する。
if [[ $(ps -e| grep xfce4 | grep -v grep |wc -l) -eq 0 ]] ;then
/mnt/c/Program\ Files/VcXsrv/vcxsrv.exe \
:1 -screen 0 1024x768 \
-xkblayout jp \
-xkbmodel jp106 \
-silent-dup-error &
startxfce4 &
fi
これでとりあえず表題は達成するはず。
3. いくつかの問題
startxfce4 の大量のwarning
次のupgradeをすると多少減る。
sudo apt-get upgrade gtk2-engines-pixbuf
また、root権限でXを起動してしまうと設定ファイル等がroot userで作られてしまって
通常のユーザーで起動するときに様々な問題が起きる。
find ~/ -user root
をしてrootのxfce関連ファイルを見つけ、適宜削除すると解決する。
vcxsrvを起動するとキーボードが勝手に変わる
今のところ簡単には解決できないっぽい。Windowsキー+Spaceでいちいち変えている。
無料版Xmingユーザーは、バイナリをいじることで解決しているらしい。
.bashrcをミスってubuntuが起動しなくなった時
うっかり.bashrcにexitをいれてしまったりすると
ubuntuが起動直後に終了してしまい困ったことになる。
.bashrcを編集したい。
を見るとcmd.exe経由でうまいことやる方法がありそう。
例えばrootで入っていじるとか。
ちなみに.bashrcはwindowsにおけるユーザー名を<USER>、WSLにおけるユーザー名を<user>とすると下記の場所にある。
C:\Users\<USER>.000\AppData\Local\Packages
\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\<user>\.bashrc
でもこういう形でのファイルの触り方は予定されていないはずなので極力避けたい。
xfceのGUI環境下でダブルクリックしてファイルを開けない
ファイルを開こうとすると
Could not launch application failed to execute child process "xterm"(no such file or directory)
となってしまって開けない。
これはgnome-terminalを入れると直る。
sudo apt-get install gnome-terminal
xfceいれたのにgnomeもいれるの・・・という気持ちになるが
参考[2]によるとgnome-terminal.wrapperが必要らしい
google-chrome, chromium-browserが起動しない
一度起動するが、その後どうやっても起動しない。
参考[3]を見つけたのでtherealkenec氏のコメントを元に次を試した。
sudo apt install ubuntu-desktop mesa-utils gdebi
sudo apt purge pulseaudio libpulse0 && sudo apt autoremove
sudo apt-get install xfce4
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
gdebi google-chrome-stable_current_amd64.deb
export NO_AT_BRIDGE=1
exec dbus-run-session -- bash
sudo service dbus start
google-chrome
安定して立ち上がるようになった。しかしgmailを開くとバグる。
依存関係があるといわれる下をインストールしてgoogle-chromeを入れなおしたが直らない。
sudo apt-get install libappindicator1
sudo apt-get install libgconf2-4 libnss3 libxss1
basic html形式で開くとgmailは問題なく使える。
https://mail.google.com/mail/u/0/h/1pq68r75kzvdr/?v%3Dlui
google calendarも問題ない。
GUI環境で日本語が文字化けする
本記事にいただいたコメントによると、日本語フォントをインストールすることで解決するそうです。
sudo apt install fonts-takao
4. 参考
[1]WSLとxfceの導入の参考
https://github.com/QMonkey/wsl-tutorial
[2]xfceのGUI環境下でダブルクリック
https://askubuntu.com/questions/419641/panel-apps-try-to-launch-in-xterm-even-though-it-isnt-installed
[3]google chrome
https://github.com/Microsoft/WSL/issues/648#issuecomment-324562271