diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 4ef3eb8d..54cab25f 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -297,6 +297,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { Handler: gui.handleServiceStop, Description: gui.Tr.Stop, }, + { + ViewName: "services", + Key: 'p', + Modifier: gocui.ModNone, + Handler: gui.handleServicePause, + Description: gui.Tr.Pause, + }, { ViewName: "services", Key: 'r', diff --git a/pkg/gui/services_panel.go b/pkg/gui/services_panel.go index a40569a7..57b02539 100644 --- a/pkg/gui/services_panel.go +++ b/pkg/gui/services_panel.go @@ -219,6 +219,30 @@ func (gui *Gui) handleServiceRemoveMenu(g *gocui.Gui, v *gocui.View) error { return gui.createServiceCommandMenu(options, gui.Tr.RemovingStatus) } +func (gui *Gui) handleServicePause(g *gocui.Gui, v *gocui.View) error { + service, err := gui.getSelectedService() + if err != nil { + return nil + } + if service.Container == nil { + return nil + } + + return gui.WithWaitingStatus(gui.Tr.PausingStatus, func() error { + if service.Container.Details.State.Paused { + err = service.Container.Unpause() + } else { + err = service.Container.Pause() + } + + if err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshContainersAndServices() + }) +} + func (gui *Gui) handleServiceStop(g *gocui.Gui, v *gocui.View) error { service, err := gui.getSelectedService() if err != nil {