WindowsからWSL上のアプリを呼び出すショートカット
動機
WSL上にインストールされているGitHub Desktopのアプリを、Windowsのスタートメニューから呼び出したい。
こんなイメージ:

ただし、以下のようなプロンプトが一瞬たりとも表示されてほしくない。

wsl、bash、powershellなどを呼び出すと表示されてしまうっぽい。
wslには --shell-type というなんかそれっぽいオプションがあるが、 wsl --shell-type none -e "xeyes" みたいにしてもプロンプトが表示された。
powershellの方にも -WindowStyle Hidden があるが、 powershell -WindowStyle Hidden -Command "bash -c xeyes" をしても一瞬プロンプトが出てきて即最小化するという挙動をする。
環境
Windows 11 Home 26100.4061
作り方
結局ChatGPTくんが激推ししてくるVBScriptを使った。
Set sh = CreateObject("WScript.Shell")
sh.Run "bash -c github-desktop", 0, False
最後の行の 0 引数によってプロンプトが出るのが抑制される。

既にこれをダブルクリックすればプロンプトなしでWSL上のアプリが起動する状態になっている。
そして、このvbsファイルへのショートカットを作り、名前とアイコンを変更した。

アイコンは今回は %USERPROFILE%\AppData\Local\GitHubDesktop\app.ico から取ってきたが、Windowsで設定可能なアイコンであればなんでも使える。
この時点で、一見すると本物のアプリのショートカットのように見える。
そして、このショートカットを %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs に配置する。
しかしこのファイルを右クリックしても「スタートメニューに表示」という項目はない。
だがこのファイルをWindowsの検索欄から表示するとなぜかスタートメニューに登録できる!
- 追記:普通にvbsへのショートカットを検索で出しても右クリックからスタートメニューに登録することはできないが、そのショートカットのアイコンを変更したらなんだかよくわからないけどスタートメニューに登録することが可能になった。

こうしてプロンプトが一瞬も表示されないWSLのアプリへのショートカットが出来上がった。

Discussion