
我需要覆蓋單一進程的預設瀏覽器。此程序從 npm 腳本手動啟動。為了以程式設計方式實現此目的,我決定BROWSER
在腳本之前覆蓋環境變數。但這不起作用。它竊取開啟系統範圍內的預設瀏覽器。我嘗試過xdg-open
,但它也不起作用。
簡而言之,我希望以下命令在提供的瀏覽器中開啟給定的 URL,而不是在預設瀏覽器中。
BROWSER='path to desired browser' xdg-open 'any url'
PS:只是為了多講我的問題。我使用 Firefox 作為我所有機器的預設瀏覽器,並且已經很習慣了。但最近,在偵錯一個 Web 應用程式時,我意識到 Firefox 開發工具未使用某些中斷點。我安裝了 Chromium,它的調試器按預期工作。我使用 Storybook 進行開發,並希望在 Chromium 中開啟它,同時使用 Firefox 作為日常使用的預設變數。
答案1
我需要類似的東西,但不限於尊重的情況$BROWSER
,因為xdg-open
經常使用錯誤的瀏覽器設定檔。
這是使用以下元件的解決方法:
BROWSER
載入變數並啟動正確瀏覽器的腳本。- 透過將當前預設
.desktop
設定檔複製到~/.local/share/applications
目錄來覆蓋它。 - 更改文件
Exec
中的語句.desktop
以使用自訂腳本。 - 在登入 shell 中將該變數設為
BROWSER
合理的預設值以進行後備。
一步步
~/bin
我在我的目錄中新增了一個腳本,custom-browser
名為:
$BROWSER "$@"
其次,使用以下命令尋找目前.desktop
設定檔:
xdg-settings get default-web-browser
這給了我firefox.desktop
,我將其複製到我的用戶主目錄:
cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
我修改了啟動Exec
中的語句。~/.local/share/applications/firefox.desktop
/home/{user}/bin/custom-browser
現在,我可以使用:
BROWSER='chromium' xdg-open 'https://startpage.com'
BROWSER='firefox' xdg-open 'https://startpage.com'
根據BROWSER
變數開啟不同的瀏覽器。希望這能以某種方式幫助您。
我的用法
我用direnv
[1] 根據目錄設定BROWSER
變量,例如,工作目錄使用我的瀏覽器的工作設定檔。
另一個是我啟動應用程式BROWSER=hardened-firefox signal-desktop
強制應用程式使用特定瀏覽器打開連結。
筆記
- 該腳本是必須的,因為該
.desktop
檔案沒有載入環境變量,所以Exec=$BROWSER %u
直接添加是不行的。 - 可以
BROWSER
在腳本中而不是登入 shell 中設定後備。 - 可以編寫自訂檔案並使用/
.desktop
更改預設值,而不是覆蓋預設值;我發現通過覆蓋更容易使其“正確”。xdg-settings
xdg-mime
- 如果使用的瀏覽器不使用 URL 作為第一個位置參數,則
.desktop
在腳本中進行自訂和處理可能會更容易。 - 如果
.desktop
設定檔不在 中/usr/share/applications
,或覆蓋 中$HOME/.local/share/applications
不起作用,請嘗試替代路徑[2] 或參閱您的發行版文件。
連結
答案2
export BROWSER='path to desired browser' && xdg-open 'any url'
應該做到這一點。