14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

株式会社Works Human IntelligenceAdvent Calendar 2021

Day 23

朝起きたらPCがWin11になっていたので、WSLgを試してみた

Last updated at Posted at 2021-12-22

 こんにちは。この記事は株式会社Works Human Intelligence Advent Calendar 2021 23日目の記事です。

 昨日の記事は@h4ya5eさんの弊社名を文法解析してみた(できるとは言ってない)です。
 よろしければカレンダーの他の記事も見ていってください。

朝起きたらPCがWindows 11になっていた

 WSLとは、Windows Subsystem for Linuxの略で、Windows上で仮想マシンのオーバーヘッドなしにLinuxを直接実行できる機能です。1
 そんなWSLがWindows 11からはGUIをサポートするようになりました。

 正確にはWindows 10でもWindows Insider Programに参加してDevチャネルを選択すれば使うことができたのですが、私はWindows上にXServerを立ててGUIアプリを使うことができていた2のでOSをアップデートしてまで利用するほではないと判断していました。

 しかしある朝、気がついたらタスクアイコンが中央に寄っていました。
 ウィンドウから角が取れ、スタートメニューアイコンの水色タイルは正面を向き、黒系統の落ち着いていたデザインは透明感を目指した方向に統一されていました。

 まだそのつもりはなかったのですが、期せずして私のPCはWindows 11にアップデートされてしまっていたのです。

 スタートメニューとタスクバーのピン止めが全て吹き飛んでいるのを見て正直やっちまったと思いましたが、普段からWSL2をよく使っていた私はさっそくWSLgを試してみることにしました。

 この記事では、私の従来の手法(WindowsにVcXsrvをインストールし、そこにWSL2から接続する)の問題点がWSLgによって解決されることや、WSLgを使ってみて得た感触などを書き連ねていきたいと思います。

従来の手法の問題点

 私が従来WSL上でGUIアプリを利用する際に使っていた手法は、ホストマシン上でXServer (VcXsrv)を起動し、そこにWSLから接続するというものでした。恐らく他の人でも同じ手法を使っていると思います。

 非常に単純で良い手法なのですが、以下の3つの大きな問題がありました。

  • VcXsrvを起動せずにWSL2上でテキストエディタを開くと、起動に滅茶苦茶時間がかかる

  • DISPLAY環境変数を設定するのがやや大変(WSL2限定)

    • WSL2からネットワーク空間がホストと共有されなくなり、ホストのIPアドレスを指定しないとホストマシンに接続できなくなりました。その結果DISPLAYの設定がやや大変になりました。やり方は色々あると思いますが、私は下のようにDISPLAYを設定していました。
    LOCAL_IP_HOST=$(ipconfig.exe | grep IPv4 | grep -o -E '192\.168\.1\.[0-9]{1,3}')
    export DISPLAY=${LOCAL_IP_HOST}:0.0
    
  • ホストマシンがスリープすると、GUIアプリが閉じていることがある(WSL2限定)

WSLgでは上で挙げた問題点が全て解決された

 WSLgにしてからは、今のところ上記の問題点は全て解決されたように見えます。

 また今まではVcXsrvを起動しないとクリップボードをホストと共有できませんでしたが、WSLgにしたらクリップボードが初めからホストとシームレスになり、地味に嬉しいです。

困った点

 WSLgに切り替えることで今まで困っていたものが解決されたのはいいのですが、新たにWSLgになって発生した問題がいくつかあったので、それら問題点とその解決方法を紹介したいと思います。

WSLg導入以後もGUIアプリが開かない

 Microsoft公式のガイド3では、wsl --updateをしてWSLを再起動するだけでWSLgを有効化できるとのことでしたが、私の手元ではアップデート以後もError: Can't open display: 0となってGUIアプリを開くことができませんでした。

 下の記事を参考に、/tmp/.X11-unixの向き先を変えてやることで解決できました。

GUIへの入力でキーボードが日本語配列で認識されてしまう

 私が普段使っているキーボードはUS配列なのですが、WSLgで開いたGUIには日本語配列で認識されてしまいました。
 以下を.profileに追記してsourceで取り込むことで解決できました。

setxkbmap -layout us

ディスプレイの電源を落とすとGUIが消えてしまう

 WSLgのGUIを配置しているディスプレイの電源を落とすとGUIが閉じてしまう現象に遭遇しています。
 issueにコメントを付けておいたので、今後改善されるといいなと思っています。

おわりに

 ウィンドウの角を引き換えに、WSL2での開発がますます便利になりました。
 今のところ、やはりWSLg目当てで無理してWindows 11にアップデートするほどのものではないと感じていますが、Windows 11へのアップデートを行った際にはぜひWSLgをお試しください。

  1. https://docs.microsoft.com/ja-jp/windows/wsl/about

  2. https://www.eisbahn.jp/yoichiro/2021/06/wslg.html

  3. https://github.com/microsoft/wslg#install-instructions-existing-wsl-install

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?