在使用 Hexo 撰寫部落格文章或者開發 Web 應用時常常會需要開啟瀏覽器來檢視結果。Hexo 或者 Web 應用開發工具除了支援啟動後端服務外也支援自動啟動系統預設的瀏覽器,但由於在 WSL 環境預設並沒有圖形桌面環境,自然無法開啟瀏覽器。本文山姆鍋將說明如何讓 WSL 中的程式可以自動開啟 Windows 系統預設的瀏覽器。
要讓程式自動開啟瀏覽器通常會有特別的參數設定。例如:Hexo 可執行下列指令啟動本地網頁服務並開啟預設的瀏覽器來連到網址 “http://127.0.0.1:4000”。 ⎘
hexo server --open
但由於上述原因並不能如預期運作。所以,往往需要手動開啟 Windows 上的瀏覽器並輸入網址來開啟網頁,雖然不算大問題,但是也太不方便。
探索
稍微研究一下 Linux 上程式如何開啟預設瀏覽器的問題,可以了解像是上述 hexo server --open
指令內部其實通常是透過 ‘xdg-open’ 這個程式來開啟桌面環境預設的應用程式。例如: xdg-open https://google.com
試圖開啟瀏覽器連結到 ‘https://google.com ⎘’ 這個網址。‘xdg-open’ 則會根據環境盡可能達成開啟應用的目的。
實現
在 WSL Ubuntu 環境中,‘xdg-open’ 包含在’xdg-utils’ 這個套件中。執行下列指令安裝 ‘xdg-utils’ 套件:
$ sudo apt install xdg-utils
在命令列執行下列指令測試是否正常:
$ xdg-open https://samkuo.me
可以開啟 Windows 預設瀏覽器(如 Chrome),並連到山姆鍋的個人部落格的話則表示運作成功 :-)
以上是在 Ubuntu 20.04 WSL 發行版本上測試,很顯然也應該只對使用 ‘xdg-open’ 的程式有效。另外,如果WSL系統已經安裝了 Linux 原生桌面環境(如 xfce4), 由於’xdg-open’會優先試圖使用 Linux 桌面環境的設定來開啟瀏覽器,會導致經過好幾分鐘後才會開啟 Windows 預設的瀏覽器。
小結
山姆鍋原先並沒有預期這樣的作法可以在 WSL 環境中正常運作,純粹只是抱著實驗看看的想法。至於可以運作的原因,由於 WSL 本身就支援從 Linux 環境直接啟動 Windows 原生程式,個人猜測 Ubuntu WSL 發行版本可能對於 ‘xdg-open’ 剛好有特別支援。不管如何,WSL 作為開發環境的可行性又更高了一點。