Windows11 Proを使おうとして困った問題のメモ
c
やv
が入力できなくなった
ターミナルでなにいってんだ?という感じかもしれないが、他の文字は入力できるのに、一部入力できない文字が出てきた。Windows Terminalに直接入力ができない問題 #WT - Qiitaにある通り、レジストリエディタで
コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Input
以下の
- InputServiceEnabled
- InputServiceEnabledForCCI
の値を0
にしたら入力できるようになった。
WSL内からVS Codeを起動できない
「WSL で VS Code の使用を開始する | Microsoft Learn」によると、WSL内からcode
コマンドを実行すると、WSLをサーバとしてWindowsをクライアントとしてVS Codeが起動できるようであった。まずそのことに驚いた。
そこで試してみると、以下のエラーが出た。
$ code .
/mnt/c/Program Files/Microsoft VS Code/bin/code: 61: /mnt/c/Program Files/Microsoft VS Code/Code.exe: Exec format error
そこで、WSL2 (Preview) cannot run .exe files: exec format error: wsl.exe · Issue #8952 · microsoft/WSLにある通り実行してみた。すると、以下の通りエラーが出た。
sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'
sudo systemctl restart systemd-binfmt
Failed to restart systemd-binfmt.service: Unit systemd-binfmt.service is masked.
そこで、上記のコメントの次のコメントにある通り実行したら解決した。
$ sudo systemctl unmask systemd-binfmt.service
Removed /etc/systemd/system/systemd-binfmt.service.
$ sudo systemctl restart systemd-binfmt
$ sudo systemctl mask systemd-binfmt.service
Created symlink /etc/systemd/system/systemd-binfmt.service → /dev/null.
無事に起動。
$ code .
Installing VS Code Server for x64 (f1b07bd25dfad64b0167beb15359ae573aecd2cc)
Downloading: 100%
Unpacking: 100%
Unpacked 1608 files and folders to /home/kentaro/.vscode-server/bin/f1b07bd25dfad64b0167beb15359ae573aecd2cc.
Windows11を23H2にアップデートしたら(元のバージョンはもうわからなくなってしまった)、IMEの設定で以下のようにしているにも関わらずCtrl-SpaceでIMEのトグルができなくなった……。
Xに同じことで困っている人がいた。
PowerToysに入ったらしいプレビューという機能が、勝手にCtrl-Spaceをのっとってた……。
SandSしたい!
「Windows で SandS (Space and Shift) を使うためのソフト「SandSExe」 | PCの歯車」がどうも動かなくて困っていたら、SandS(Space and Shift)で紹介されているJCtrlでいい感じに動いてくれた。ありがたい!
MacのCocoaキーバインド的なことがしたい
microsoft/PowerToys: Windows system utilities to maximize productivityを使って、「Windows10にEmacs風キーバインドを設定する #Windows10 - Qiita」にあるものをがんばって入れていく。
↑にある以外では、Ctrl-[
をEsc
にした。
他のホストからWSL2で起動しているサーバへアクセスしたい
Windows上からだと、WSL2でlistenしてるポートへlocalhostから自動的にポートフォワーディングされているので、WSL2で起動していてもWindowsで起動しているかのように透過的に扱うことができる。
一方で、他のホストからのアクセスはそうはいかない。「ローカル エリア ネットワーク (LAN) からの WSL 2 ディストリビューションへのアクセス 」というドキュメントがあった。
こんな感じで、netsh
コマンドを用いてフォワードしてやる必要がある(管理者権限が必要なので、ターミナルを管理者として実行する)。
netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)
Stable Diffusion Web uiにLAN内のべつのホストから接続するために、以下の内容のコマンドを実行した(172.29.205.223
は、(wsl hostname -I)
を実行した結果。そのコマンドそのものを書いたのではだめだった)。
netsh interface portproxy add v4tov4 listenport=7860 listenaddress=0.0.0.0 connectport=7860 connectaddress=172.29.205.223
(Microsoft は、このエクスペリエンスを改善する方法を検討しています)
とあるので、Microsoftとしてももっといい感じにしようとしているようである。
↑と思ったら、そんなことなかった?挙動がよくわからなくなってきた。
やっぱ必要だった。
WSL2(Ubuntu)で音がならない
こんなエラーが出てしまう。
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
以下の記事に従ってWindowsでPulseAudioサーバを設定・起動する。
Ubuntu上でpulseaudioを入れる。
apt -y install pulseaudio
これでちゃんと音が出るようになった。
aplay ~/tmp/test.wav
Playing WAVE '/home/kentaro/tmp/test.wav' : Signed 16 bit Little Endian, Rate 24000 Hz, Mono
Google IMEでCtrl-SpaceでIMEのOn/Off
以下の通り設定する。
Google日本語入力でCtrl + Spaceキーに日本語入力ON/OFF設定を割り当てる方法 | くろぶたさん.com
WSL2内でcursorが起動しない
WSL: cursor command fails to find the correct entrypoint · Issue #807 · getcursor/cursorにあるスクリプト(gist.githubusercontent.com/ddwang/0046da801bcb29d241869d37ad719394/raw/088836e0d946de07a82c245066ef07ddc35e9f53/cursor.sh)を用いると起動する。
起動のたびにVS Code Serverをダウンロードするのがだるい。