From a1acbb80b863ca7361c36919be4ea095b27f28cb Mon Sep 17 00:00:00 2001 From: Ted Wood Date: Wed, 14 Jun 2023 11:21:57 -0400 Subject: [PATCH] Add support for defining custom URL browser in config --- config/config.go | 9 +++++---- ui/windows/postshow/handlers.go | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/config/config.go b/config/config.go index 083a262..da2d699 100644 --- a/config/config.go +++ b/config/config.go @@ -39,10 +39,10 @@ type ThemeItemConfig struct { } type Config struct { - Debug bool - Log string - Proxy string - + Debug bool + Log string + Proxy string + Browser string RenderShadows bool RenderImages bool @@ -188,6 +188,7 @@ func SetDefaults(cacheDir string) { viper.SetDefault("Debug", "false") viper.SetDefault("Log", path.Join(cacheDir, "neonmodem.log")) viper.SetDefault("Proxy", "") + viper.SetDefault("Browser", "") viper.SetDefault("RenderShadows", "true") viper.SetDefault("RenderImages", "true") diff --git a/ui/windows/postshow/handlers.go b/ui/windows/postshow/handlers.go index 22ce8a3..b4da14b 100644 --- a/ui/windows/postshow/handlers.go +++ b/ui/windows/postshow/handlers.go @@ -2,6 +2,8 @@ package postshow import ( "errors" + "os" + "os/exec" "strconv" "time" @@ -91,6 +93,28 @@ func handleOpen(mi interface{}) (bool, []tea.Cmd) { var cmds []tea.Cmd openURL := m.activePost.URL + + browserPath := m.ctx.Config.Browser + if browserPath != "" { + if _, err := os.Stat(browserPath); err != nil { + m.ctx.Logger.Error(err) + cmds = append(cmds, cmd.New( + cmd.MsgError, + WIN_ID, + cmd.Arg{ + Name: "error", + Value: err, + }, + ).Tea()) + return true, cmds + } + cmd := exec.Command(browserPath, openURL) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.Run() + return true, cmds + } + browser.Stderr = nil browser.Stdout = nil if err := browser.OpenURL(openURL); err != nil {