Help us understand the problem. What is going on with this article?

WSLでwindows上にLinuxのGUI環境を作る[メモ]

More than 1 year has passed since last update.

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からインストールする。

https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6?rtc=1

VcXsrvを入れる

VcXsrvをsourceforgeから入手しインストールする。

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

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も入っている。

.bashrc
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 <filename>
で開くことが出来る。このとき¥マークはエスケープ文字\になるので<filename>の記述は適宜修正する必要がある。
例えば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

これを.bashrcに書いて自動化すれば表題は達成するが、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`の最後に次を追加する。

.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を編集したい。

https://askubuntu.com/questions/816732/how-to-change-default-user-in-wsl-ubuntu-bash-on-windows-10

を見ると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

MERIK
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした