diff --git a/v2/internal/frontend/desktop/darwin/browser.go b/v2/internal/frontend/desktop/darwin/browser.go index 417501c8e..12b2bc8fc 100644 --- a/v2/internal/frontend/desktop/darwin/browser.go +++ b/v2/internal/frontend/desktop/darwin/browser.go @@ -10,5 +10,7 @@ import ( // BrowserOpenURL Use the default browser to open the url func (f *Frontend) BrowserOpenURL(url string) { // Specific method implementation - _ = browser.OpenURL(url) + if err := browser.OpenURL(url); err != nil { + f.logger.Error("Unable to open default system browser") + } } diff --git a/v2/internal/frontend/desktop/linux/browser.go b/v2/internal/frontend/desktop/linux/browser.go index 47bf0ba5d..30ca9620c 100644 --- a/v2/internal/frontend/desktop/linux/browser.go +++ b/v2/internal/frontend/desktop/linux/browser.go @@ -8,5 +8,7 @@ import "github.com/pkg/browser" // BrowserOpenURL Use the default browser to open the url func (f *Frontend) BrowserOpenURL(url string) { // Specific method implementation - _ = browser.OpenURL(url) + if err := browser.OpenURL(url); err != nil { + f.logger.Error("Unable to open default system browser") + } } diff --git a/v2/internal/frontend/desktop/windows/browser.go b/v2/internal/frontend/desktop/windows/browser.go index f23b04dbe..2b058feda 100644 --- a/v2/internal/frontend/desktop/windows/browser.go +++ b/v2/internal/frontend/desktop/windows/browser.go @@ -5,10 +5,31 @@ package windows import ( "github.com/pkg/browser" + "golang.org/x/sys/windows" ) +var fallbackBrowserPaths = []string{ + `\Program Files (x86)\Microsoft\Edge\Application\msedge.exe`, + `\Program Files\Google\Chrome\Application\chrome.exe`, + `\Program Files (x86)\Google\Chrome\Application\chrome.exe`, + `\Program Files\Mozilla Firefox\firefox.exe`, +} + // BrowserOpenURL Use the default browser to open the url func (f *Frontend) BrowserOpenURL(url string) { // Specific method implementation - _ = browser.OpenURL(url) + err := browser.OpenURL(url) + if err == nil { + return + } + for _, fallback := range fallbackBrowserPaths { + if err := openBrowser(fallback, url); err == nil { + return + } + } + f.logger.Error("Unable to open default system browser") +} + +func openBrowser(path, url string) error { + return windows.ShellExecute(0, nil, windows.StringToUTF16Ptr(path), windows.StringToUTF16Ptr(url), nil, windows.SW_SHOWNORMAL) }