はじめに
Windows 11上のWSL2にUbuntuなどのLinuxをインストールして開発環境を構築している方は多いと思います(便利ですよね)。
その際、ブラウザの運用方針は人によって分かれるかと思います。
- WSL2上のLinux側にブラウザをインストールして完結させる(ただ、日本語という観点だと、Linux側にIMEをインストールするなど、ブラウザインストール以外の手間がかかります)
- WSL2上のLinux側にはブラウザをインストールせず、Windows側のブラウザをそのまま使う(今回はこちら)
特に後者の場合、CLIツールを使った認証などで少しつまずくポイントがあります。本記事ではその解決策と、さらに便利なWindows連携ツールへの応用を紹介します。
CLIツールのブラウザ認証で発生するエラー
Linux側でGitHub CLIなどのツールを使う際に、gh auth login のようにブラウザ認証を行おうとした際、以下のようなメッセージが表示されることがあります。
! First copy your one-time code: XXXX-XXXX
Press Enter to open https://github.com/login/device in your browser...
ここで素直にEnterキーを押しても、ブラウザが(Linux側にはインストールされていないので)立ち上がらず、以下のようなエラーが出力されてしまうケースがあります。
! Failed opening a web browser at https://github.com/login/device
exec: "xdg-open,x-www-browser,www-browser,wslview": executable file not found in $PATH
これは、Linux側でURLを開くための標準コマンド(xdg-openなど)が見つからず、その上、Windows側のブラウザに処理を渡せていないために発生します。
解決策: wslu (Windows Subsystem for Linux Utilities) の導入
このような時に役立つのが wslu パッケージです。これを導入することで、WSL2側からの「URLを開く」という指示を、Windows側のデフォルトアプリに橋渡ししてくれます。
1. インストール
Ubuntuの場合は、aptコマンドを使って簡単にインストールできます。
sudo apt update
sudo apt install wslu -y
2. xdg-openとの紐づけ
インストールするとwslviewというコマンドが使えるようになります。多くのCLIツールは、ハードコードでxdg-openを探すため、確実に処理が渡るようにシンボリックリンクを作成しておきます。
# そもそも xdg-open がなければインストールしておく
sudo apt install xdg-utils
# そのうえで既存の xdg-open をバックアップ
sudo mv /usr/bin/xdg-open /usr/bin/xdg-open.bak
# wslview を xdg-open としてリンク
sudo ln -s /usr/bin/wslview /usr/bin/xdg-open
3. 環境変数 BROWSER の設定
一部のツールは、環境変数 BROWSER を参照するため、シェルの設定ファイル(~/.bashrcなど)に以下を追記しておくと完璧です。
export BROWSER=wslview
設定を再読み込み(source ~/.bashrcなど)すれば、先ほどの gh auth login からでもシームレスにWindows側のブラウザが立ち上がるようになります(Congratulations, you're all set!)。
さらに便利に: Browser Tamer でプロファイルを自動振り分け
wslview がWindows側に処理を渡す先は、Windowsの「既定のブラウザ」です。
ここに Browser Tamer などのブラウザルーター(振り分けツール)を設定しておくと、WSL2上で動作しているアプリケーションがブラウザを起動する際に、その恩恵を受けることができます。
- このURL(ドメイン)はChromeの会社プロファイルで開く
- このURL(ドメイン)はChromeの個人プロファイルで開く
といったルールをWindows側でいったん設定しておけば、WSL2からのブラウザ起動であろうとプロファイルの切り替えミスを防ぎ(あるいはドキュメントが開けないといったトラブルを防ぎ)、作業効率が劇的に向上します。
- Browser Tamer: https://github.com/aloneguid/bt/releases
WSL2の隔離された開発環境と、Windowsのブラウザ+日本語入出力環境、この2つをストレスなくつなぐために、ぜひ wslu を活用してみてください。