Windows 11 + WSLg + emacs .... トラブル

またまたご無沙汰。トラブルがあるとメモというか愚痴というか、記録を残す気持ちになる。

さてタイトルにあるように Windows 11 で Windows Subsystem for Linux の話。Windows 11 になってとうとう WSL Gui 略して WSLg が導入された。Linux というか UNIX, BSD の世界では X11グラフィカルユーザーインターフェースの基幹となっている。GUIベースのソフトウェアを使用したいのならX11が必要。サーバー&クライアントシステムとして設計されており、ローカルPC上で X11 Server を走らせる必要がある。

WindowsLinux を利用する選択肢は様々なものが存在したが、結局のところWindows Subsystem for Linux に落ち着いてきた。マイクロソフトご謹製ということもあるし、なんといっても Windows との親和性が非常に高い。一方、X11 ソフトウェアを使いたい場合、何からの方法で X11 Server を用意しないといけなかった。

もしフリー版を望むなら、XMing、VxSrv等のスタンドアロンタイプなもの、結局 WSLセッション用のターミナルが必要なこともあるので MobaXterm 等が選択肢になる。しかし、Visual Studio Code の出来が非常に良いこと、Remote - WSL 機能拡張の存在から、Visual Studio Code をかつての emacs 的に使いたくなる。そうすると MobaXterm よりも XMing、VxSrv が望ましい。

ただしこれらは、そういった事情を把握している人には選択の組み合わせだけの問題である一方、事情に疎い人にとってはもはや何をしているのか???な状況となっていた。

そこで WSLg である。WSL をいれておけば X11 Server もちゃんと走って、なにもきにしないでも emacsX11 ソフトウェアを Windows Desktop で使える。Mac OS X が現れた時に(X11をいれておけば)Unix&BSD ユーザが享受した環境を Windows で再現する事になる。Mac の場合は多くのソフトウェアが Native にデスクトップ環境に対応し、XQuartz の必要性が徐々に低下している現在、こういった環境を必要とするニッチなユーザーの興味を十分ひきつけるものだといえよう。

最初に WSLg の存在を知った段階では、これは単に WSLからの X11 Client セッションのみに対応したものか?と邪推していた。ところが WSL からリモートホストssh + X11 forwading で接続しリモートホストから X11 セッションを貼ってみると、まったく問題なくリモートからのウィンドウがWindows Desktop に表示された。完全な X11 Server じゃないですか。

長々長々と書いてみましたが、結論は Windows 11 + WSLg 最高!

 

・・・・・・で済めば問題なく、そうは問屋がおろさない。

 

さて、ヘビロテなソフトというと emacs。かつてはエディタではなく環境であると言わしめた、必要不可欠なソフトウェア。ログインしたら emacs + mew でメールを読み、emacs + w3m でウェブブラウザを行い、コーディングは当然のことながら、emacs なければなにも作業がすすまない、今の時代でいうところの Browser な役割。

Windows 11 で Windows Terminal を開き、emacs を起動する。まったく問題ない。いろいろ作業をして終了する。メニューの中の Quit なんて選択しない、男は黙って Ctr+X Ctr-C でしょう。

Terminal はそのままに、もういちど emacs を起動しましょう。なぜかバッファーには Ctr+c の連打。どうやら emacs 終了時の Ctr+c が残ってしまう様子。

これをメニューにある Quit から終了してみると、再起動した emacs に不穏な入力は示されない。

いつも Ctr+c かというと、別の時には ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

となる。終了時に Key 入力の X event がなぜか残り、次のプロセスに渡されている様子。

最初はね、疑いました。HHK の BT 接続。前のポストに愚痴ったように、HHK を BT 接続すると時々妙な振る舞いをする。USB接続すれば問題解決。もしかしたら同じ現象?って。

でもこちらはBTだろうがUSBだろうが関係なく発生します。同じ emacs だけ?というわけでもなく、emacs を最初に起動 Ctr+x Ctr+c で終了、その後に ROOT を起動、TBrowser を表示してもなんだか変なキー入力が発生する。どうも WSLg の問題なのではなかろうか?という段階。

とりあえず emacs を終了する時にはマウス操作で終了すれば問題を回避できます。そもそもエディタ・環境に emacs は必要ありません。Visual Studio Codeがあれば良いかも。

ものはためしに Windows Terminal ではなくて、Visual Studio Code + Remote - WSL 環境で、VSC内の Terminal から X11 Client を動かしてみると・・・・・何の問題もなく利用できます。さようなら emacs