diff --git a/changelog.md b/changelog.md index ee752ea943d4..5e8ad40c373d 100644 --- a/changelog.md +++ b/changelog.md @@ -18,6 +18,7 @@ ## Library additions +- Added `browsers.osOpen` const alias for the operating system specific *"open"* command. ## Library changes diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim index 3f2045c3b9fd..ee302f950f77 100644 --- a/lib/pure/browsers.nim +++ b/lib/pure/browsers.nim @@ -19,6 +19,11 @@ when defined(windows): else: import os, osproc +const osOpenCmd* = + when defined(macos) or defined(windows): "open" else: "xdg-open" ## \ + ## Alias for the operating system specific *"open"* command, + ## ``"open"`` on MacOS and Windows, ``"xdg-open"`` on Linux, BSD, etc. + proc openDefaultBrowser*(url: string) = ## opens `url` with the user's default browser. This does not block. ## @@ -29,14 +34,14 @@ proc openDefaultBrowser*(url: string) = ## ## This proc doesn't raise an exception on error, beware. when defined(windows): - var o = newWideCString("open") + var o = newWideCString(osOpenCmd) var u = newWideCString(url) discard shellExecuteW(0'i32, o, u, nil, nil, SW_SHOWNORMAL) elif defined(macosx): - discard execShellCmd("open " & quoteShell(url)) + discard execShellCmd(osOpenCmd & " " & quoteShell(url)) else: var u = quoteShell(url) - if execShellCmd("xdg-open " & u) == 0: return + if execShellCmd(osOpenCmd & " " & u) == 0: return for b in getEnv("BROWSER").string.split(PathSep): try: # we use ``startProcess`` here because we don't want to block!