summary refs log tree commit diff stats
path: root/lib/pure/browsers.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pure/browsers.nim')
-rw-r--r--lib/pure/browsers.nim14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim
index 2dc14b895..9b3b67104 100644
--- a/lib/pure/browsers.nim
+++ b/lib/pure/browsers.nim
@@ -18,6 +18,7 @@ import strutils
 
 when defined(windows):
   import winlean
+  from os import absolutePath
 else:
   import os, osproc
 
@@ -26,16 +27,21 @@ const osOpenCmd* =
   ## Alias for the operating system specific *"open"* command,
   ## ``"open"`` on OSX, MacOS and Windows, ``"xdg-open"`` on Linux, BSD, etc.
 
+proc prepare(s: string): string =
+  if s.contains("://"):
+    result = s
+  else:
+    result = "file://" & absolutePath(s)
 
-template openDefaultBrowserImpl(url: string) =
+proc openDefaultBrowserImpl(url: string) =
   when defined(windows):
     var o = newWideCString(osOpenCmd)
-    var u = newWideCString(url)
+    var u = newWideCString(prepare url)
     discard shellExecuteW(0'i32, o, u, nil, nil, SW_SHOWNORMAL)
   elif defined(macosx):
-    discard execShellCmd(osOpenCmd & " " & quoteShell(url))
+    discard execShellCmd(osOpenCmd & " " & quoteShell(prepare url))
   else:
-    var u = quoteShell(url)
+    var u = quoteShell(prepare url)
     if execShellCmd(osOpenCmd & " " & u) == 0: return
     for b in getEnv("BROWSER").string.split(PathSep):
       try: