diff --git a/pkg/gui/containers_panel.go b/pkg/gui/containers_panel.go index ac97ecf14..f60561b1d 100644 --- a/pkg/gui/containers_panel.go +++ b/pkg/gui/containers_panel.go @@ -571,3 +571,26 @@ func (gui *Gui) handleContainersBulkCommand(g *gocui.Gui, v *gocui.View) error { return gui.createBulkCommandMenu(bulkCommands, commandObject) } + +// Open first port in browser +func (gui *Gui) handleContainersOpenInBrowserCommand(g *gocui.Gui, v *gocui.View) error { + container, err := gui.getSelectedContainer() + if err != nil { + return nil + } + // skip if no any ports + if len(container.Container.Ports) == 0 { + return nil + } + // skip if the first port is not published + port := container.Container.Ports[0] + if port.IP == "" { + return nil + } + ip := port.IP + if ip == "0.0.0.0" { + ip = "localhost" + } + link := fmt.Sprintf("http://%s:%d/", ip, port.PublicPort) + return gui.OSCommand.OpenLink(link) +} diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 953ec8ef3..d421cb15b 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -262,6 +262,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { Handler: gui.handleContainersBulkCommand, Description: gui.Tr.ViewBulkCommands, }, + { + ViewName: "containers", + Key: 'w', + Modifier: gocui.ModNone, + Handler: gui.handleContainersOpenInBrowserCommand, + Description: gui.Tr.OpenInBrowser, + }, { ViewName: "services", Key: 'd', diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index b5c479942..fc7c167d0 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -82,6 +82,7 @@ type TranslationSet struct { ViewRestartOptions string RunCustomCommand string ViewBulkCommands string + OpenInBrowser string LogsTitle string ConfigTitle string @@ -150,6 +151,7 @@ func englishSet() TranslationSet { ViewRestartOptions: "view restart options", RunCustomCommand: "run predefined custom command", ViewBulkCommands: "view bulk commands", + OpenInBrowser: "open in browser (first port is http)", AnonymousReportingTitle: "Help make lazydocker better", AnonymousReportingPrompt: "Would you like to enable anonymous reporting data to help improve lazydocker?",