🪟

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を使った。

GitHub Desktop - Ubuntu.vbs
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