diff --git a/app/wtf_app.go b/app/wtf_app.go index 98297974..7236a5ab 100644 --- a/app/wtf_app.go +++ b/app/wtf_app.go @@ -140,6 +140,8 @@ func (wtfApp *WtfApp) watchForConfigChanges() { config := cfg.LoadWtfConfigFile(wtfApp.configFilePath) newApp := NewWtfApp(wtfApp.app, config, wtfApp.configFilePath) + openUrlUtil := utils.ToStrs(config.UList("wtf.openUrlUtil", []interface{}{})) + utils.Init(config.UString("wtf.openFileUtil", "open"), openUrlUtil) newApp.Start() case err := <-watch.Error: diff --git a/main.go b/main.go index 9798642c..20a689cc 100644 --- a/main.go +++ b/main.go @@ -60,7 +60,8 @@ func main() { defer profile.Start(profile.MemProfile).Stop() } - utils.Init(config.UString("wtf.openFileUtil", "open")) + openUrlUtil := utils.ToStrs(config.UList("wtf.openUrlUtil", []interface{}{})) + utils.Init(config.UString("wtf.openFileUtil", "open"), openUrlUtil) setTerm(config) diff --git a/utils/init.go b/utils/init.go index 7ee5b65e..3a6b0987 100644 --- a/utils/init.go +++ b/utils/init.go @@ -2,8 +2,10 @@ package utils // OpenFileUtil defines the system utility to use to open files var OpenFileUtil = "open" +var OpenUrlUtil = []string{} // Init initializes global settings in the wtf package -func Init(openFileUtil string) { +func Init(openFileUtil string, openUrlUtil []string) { OpenFileUtil = openFileUtil + OpenUrlUtil = openUrlUtil } diff --git a/utils/utils.go b/utils/utils.go index d5bf07a9..adf3af30 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -100,6 +100,12 @@ func Includes(strs []string, val string) bool { // OpenFile opens the file defined in `path` via the operating system func OpenFile(path string) { if (strings.HasPrefix(path, "http://")) || (strings.HasPrefix(path, "https://")) { + if len(OpenUrlUtil) > 0 { + commands := append(OpenUrlUtil, path) + args := commands[1:len(commands)] + exec.Command(commands[0], args...).Start() + return + } switch runtime.GOOS { case "linux": exec.Command("xdg-open", path).Start()