Windows 11 (22000.318) にしていろいろ試した

Boot Camp で入れてある Windows 10 をなんとなく Windows 11 にした。なんかアドベントカレンダーっぽい時期だけどどこのアドベントカレンダーの記事でもありません。

Boot CampWindows 11 を入れようとしても普通は TPM がないので入らないが、Windows 11 のインストールISOの中身を一回デスクトップにぶちまけて sources\appraiserres.dll を消す方法で Windows 10 からアップグレードできた (インストーラーが Windows Update をするかと聞いてくるが断る事)。ネット上にいくらでもやってみた記事があるので適当に参考にするといい。クリーンインストールだとインストール前にレジストリをいじるだけで行けるはずだが、Boot Camp のドライバを当てるのがだるそうなので Windows 10 からのアップグレードのほうがいいかも。

新UIについて

ウィンドウの角が丸くなってmacOSっぽいかわいい。が、なんと下斜め方向のリサイズの当たり判定で角丸が考慮されておらず、「角が丸くなかったらこのへんが角なんだろうな」という位置を推定してリサイズをする必要があって面倒。

モダンなアプリで出るメニューもかわいくなった。 f:id:rinsuki:20211213075626p:plain

が、Win32のアプリで出るメニューのハイライトが非常にひどい。どうしてこんなことに………。まあ表示は細くても当たり判定は以前のままなのでここの使い勝手はあんまり変わっていない。

f:id:rinsuki:20211213075718p:plain

なぜかタスクバーに出るウィンドウのタイトルがMSゴシック。なんで??

f:id:rinsuki:20211213093222p:plain

あとところどころ機械翻訳がやりそうなミスをしているところがあって心がちょっとしんどくなる。

全体的にこの品質は beta 終盤くらいの感じでは…という気持ちになる。まあ1年くらいしたらいい感じになってるでしょう。

Windows Subsystem for Android を試す

本当はリージョンをUSにしないと入れられないはずだが、なんかMSのサーバーから直DLするリンクを吐いてくれるサイトがあって、そこからダウンロードするとサイドロードできる。さらにごちゃごちゃすると Magisk で root が取れたり OpenGApps が入る。今回は Magisk だけ入れて OpenGApps は入れなかった。

WSA内でAndroidアプリをインストールすると、あたかもそれが Windows アプリであるかのように Windows 側にもインストールされたことになる。通知もちゃんとアプリ名が出るし、アプリ一覧で容量カウントもちゃんと出るし、「変更」を押すと WSA が起動してAndroidのアプリ情報の画面が出る。よくできてる。

f:id:rinsuki:20211213072851p:plain

ウィンドウごとに完全に世界が独立してそうだけどどうなっているのか?というと、どうやら Windows 上の1ウィンドウに対して Android 側の世界で 1 ディスプレイが生えるらしい。 Per-Monitor DPI にもちゃんと対応していて、ちゃんとAndroid内のDPIが変わる。

f:id:rinsuki:20211213073259p:plain
100%の時
f:id:rinsuki:20211213073316p:plain
150%の時

OBS でもキャプチャ方法を「Windows 10 (1903以降)」にすればキャプチャできるが、クライアント領域がなぜかタイトルバーの領域を含んでいるという問題がある。UWPだから?

WSA 内で Developer Mode をオンにすると adb が使える。ここからサイドロードし放題。みんな大好き Houdini があるので ARM64 しかないアプリもしっかり動く。開発者向けオプションの画面も WSA の設定から開ける。

一部アプリでは 16:9 (or 9:16) が強制になる。最大化はできるがレターボックスになる (が色がタイトルバーと同じなのでそこまで微妙ではない)。これは開発者向けオプションで「アクティビティをサイズ変更可能にする」みたいなオプションを有効にしてもだめ。

マイク・カメラはそのまま Android 内でも使えるので Twitter Spaces に PC からスピーカーとして入るのにはいいかも。モーションセンサーは何も起きない。

マウスに戻るボタンがあるとそれがそのままAndroid内でも戻るボタンになる。スクロールはAndroidエミュあるあるのタッチで誤魔化す(そして一部アプリで変に誤爆タップが起きる)パターン。appcompatdb.json を見るとなんかアプリごとに方向キーに変えられそうな雰囲気があるが実際に変えられるかはわからない。

なんと Windows 上のIMEがそのまま Android アプリ内で使える。marked text までちゃんと反映される。すごい。まだUSオンリーなのに…。

f:id:rinsuki:20211213092017p:plain

OpenGL ES は 3.0 までのサポート。Android Emulator みたいに Vulkan 対応してたりはしない。デレスポで高画質をオンにするとなんかやたら重くなる (CPUの速度がネックっぽくて GPU はかなり暇してる) が何でだろう。根拠はないがディスプレイ解像度を極端にでかいものと誤認している気がする。真相はわからない。

f:id:rinsuki:20211213074838p:plain
OpenGL Extensions Viewer での様子

…ただし、WSAはまだちょっと不安定で、いろんなアプリを起動してごちゃごちゃやっていると唐突にWSAのアプリすべてが反応しなくなって、しばらくすると落ちる。adb logcat を見ているとなんかめっちゃダメそうなログが出る。

WSLg を試す

WSLg って Windows 10 でも試せるんだっけ?

適当にWSLを開いて X アプリを起動するととりあえず動く。

f:id:rinsuki:20211213080323p:plain
これがやりたかっただけ

f:id:rinsuki:20211213081044p:plain
ちゃんと WindowsEULA を(たぶん)破らず msgothic.ttc を Wine で使っている数少なそうな例

が、WSL2 のディストロに(無理やり) Arch Linux を選んでいる場合はこれだとGPU支援が効かなくて llvmpipe で描画されることになる。

GPU支援を利用するには d3d12 の gallium driver を有効にしてビルドされた mesa (& 32bit アプリを動かすなら lib32-mesa も) が必要で、Arch Linux では AUR から入れる必要があるが、これが 32bit アプリには対応していない。まあ現代において 32bit で GPU 使えて嬉しいのって wine くらいだろ…ということにするなら Docker で適当に Ubuntu 21.xx あたりをベースにしたイメージを作ってwineはそっちで動かせばよい。たぶん /dev/dxg と /tmp/.X11-unix をコンテナ内に持っていけば動くと思う。

XWayland 経由で表示されるウィンドウが Per Monitor DPI に対応していなくて (拡大すらされない) ちょっとつらい。


感想としては、まあそこまで急いで上げるほどでもないかな、という感じ。一年くらいしたら微妙なところも修正されていい感じになってそうなので、それからでもいいかも。

あとなんか試してほしいことがあったら教えてください。既存アプリとの互換性はあんまり Windows 自体を使っていないのでわからないけどとりあえず WSL 2 とか Firefox とか VSCode とか Among Us とか Discord とかはそのまま動いた。あと taskmgr.exe は未だに PerMonitorV2 に対応してない。