diff options
| -rw-r--r-- | browser.go | 17 | ||||
| -rw-r--r-- | browser_unix.go | 22 | ||||
| -rw-r--r-- | browser_windows.go | 9 | 
3 files changed, 47 insertions, 1 deletions
| @@ -55,9 +55,24 @@ func OpenURL(url string) error {  }  func runCmd(prog string, args ...string) error { -	cmd := exec.Command(prog, args...) +	var cmd *exec.Cmd + +	browser := envBrowserCmd() +	if browser != "" { +		sh, flag := shell() +		url := args[len(args)-1] +		browserCmd := fmtBrowserCmd(browser, url) +		cmd = exec.Command(sh, flag, browserCmd) +	} else { +		cmd = exec.Command(prog, args...) +	} +  	cmd.Stdout = Stdout  	cmd.Stderr = Stderr  	setFlags(cmd)  	return cmd.Run()  } + +func envBrowserCmd() string { +	return os.Getenv("BROWSER") +} diff --git a/browser_unix.go b/browser_unix.go new file mode 100644 index 0000000..30d57db --- /dev/null +++ b/browser_unix.go @@ -0,0 +1,22 @@ +// +build !windows + +package browser + +import ( +	"fmt" +	"os" +) + +func shell() (shell, flag string) { +	shell = os.Getenv("SHELL") + +	if shell == "" { +		shell = "/bin/sh" +	} + +	return shell, "-c" +} + +func fmtBrowserCmd(browser, url string) string { +	return fmt.Sprintf("%s '%s'", browser, url) +} diff --git a/browser_windows.go b/browser_windows.go index a964c7b..0be67a2 100644 --- a/browser_windows.go +++ b/browser_windows.go @@ -1,6 +1,7 @@  package browser  import ( +	"fmt"  	"os/exec"  	"strings"  	"syscall" @@ -14,3 +15,11 @@ func openBrowser(url string) error {  func setFlags(cmd *exec.Cmd) {  	cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}  } + +func shell() (shell, flag string) { +	return "cmd", "/c" +} + +func fmtBrowserCmd(browser, url string) string { +	return fmt.Sprintf("%s %s", browser, url) +} | 
