diff --git a/docs/keybindings/Keybindings_de.md b/docs/keybindings/Keybindings_de.md
index 62b92011..9f08b97b 100644
--- a/docs/keybindings/Keybindings_de.md
+++ b/docs/keybindings/Keybindings_de.md
@@ -17,6 +17,7 @@
[: vorheriges Tab
]: nächstes Tab
d: entfernen
+ e: Hide/Show stopped containers
s: anhalten
r: neustarten
a: anbinden
diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md
index 3e6301b9..3cedb64b 100644
--- a/docs/keybindings/Keybindings_en.md
+++ b/docs/keybindings/Keybindings_en.md
@@ -17,6 +17,7 @@
[: previous tab
]: next tab
d: remove
+ e: Hide/Show stopped containers
s: stop
r: restart
a: attach
diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md
index 041f86e9..2cc97077 100644
--- a/docs/keybindings/Keybindings_nl.md
+++ b/docs/keybindings/Keybindings_nl.md
@@ -17,6 +17,7 @@
[: vorige tab
]: volgende tab
d: verwijder
+ e: Verberg gestopte containers
s: stop
r: herstart
a: verbinden
@@ -36,7 +37,7 @@
m: bekijk logs
[: vorige tab
]: volgende tab
- R: beijk herstart opties
+ R: bekijk herstart opties
c: draai een vooraf bedacht aangepaste opdracht
enter: focus hooft panneel
diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md
index 9e65f80d..82e4cab2 100644
--- a/docs/keybindings/Keybindings_pl.md
+++ b/docs/keybindings/Keybindings_pl.md
@@ -17,6 +17,7 @@
[: poprzednia zakładka
]: następna zakładka
d: usuń
+ e: Hide/Show stopped containers
s: zatrzymaj
r: restartuj
a: przyczep
diff --git a/docs/keybindings/Keybindings_tr.md b/docs/keybindings/Keybindings_tr.md
index dc8bb571..30f69b5c 100644
--- a/docs/keybindings/Keybindings_tr.md
+++ b/docs/keybindings/Keybindings_tr.md
@@ -17,6 +17,7 @@
[: önceki sekme
]: sonraki sekme
d: kaldır
+ e: Hide/Show stopped containers
s: durdur
r: yeniden başlat
a: bağlan/iliştir
diff --git a/pkg/commands/docker.go b/pkg/commands/docker.go
index 44fc6cda..20a4d8cd 100644
--- a/pkg/commands/docker.go
+++ b/pkg/commands/docker.go
@@ -29,6 +29,7 @@ type DockerCommand struct {
Config *config.AppConfig
Client *client.Client
InDockerComposeProject bool
+ ShowExited bool
ErrorChan chan error
ContainerMutex sync.Mutex
ServiceMutex sync.Mutex
@@ -73,6 +74,7 @@ func NewDockerCommand(log *logrus.Entry, osCommand *OSCommand, tr *i18n.Translat
Config: config,
Client: cli,
ErrorChan: errorChan,
+ ShowExited: true,
InDockerComposeProject: true,
}
@@ -213,10 +215,8 @@ func (c *DockerCommand) RefreshContainersAndServices() error {
c.assignContainersToServices(containers, services)
- var displayContainers []*Container
- if c.Config.UserConfig.Gui.ShowAllContainers {
- displayContainers = containers
- } else {
+ var displayContainers = containers
+ if !c.Config.UserConfig.Gui.ShowAllContainers {
displayContainers = c.obtainStandaloneContainers(containers, services)
}
@@ -235,7 +235,7 @@ func (c *DockerCommand) RefreshContainersAndServices() error {
c.Containers = containers
c.Services = services
- c.DisplayContainers = displayContainers
+ c.DisplayContainers = c.filterOutExited(displayContainers)
return nil
}
@@ -253,6 +253,20 @@ L:
}
}
+// filterOutExited filters out the exited containers if c.ShowExited is false
+func (c *DockerCommand) filterOutExited(containers []*Container) []*Container {
+ if c.ShowExited {
+ return containers
+ }
+ toReturn := []*Container{}
+ for _, container := range containers {
+ if container.Container.State != "exited" {
+ toReturn = append(toReturn, container)
+ }
+ }
+ return toReturn
+}
+
// obtainStandaloneContainers returns standalone containers. Standalone containers are containers which are either one-off containers, or whose service is not part of this docker-compose context
func (c *DockerCommand) obtainStandaloneContainers(containers []*Container, services []*Service) []*Container {
standaloneContainers := []*Container{}
diff --git a/pkg/gui/containers_panel.go b/pkg/gui/containers_panel.go
index 22ec1d99..d1c61f5e 100644
--- a/pkg/gui/containers_panel.go
+++ b/pkg/gui/containers_panel.go
@@ -277,6 +277,7 @@ func (gui *Gui) refreshContainersAndServices() error {
gui.g.Update(func(g *gocui.Gui) error {
containersView.Clear()
isFocused := gui.g.CurrentView().Name() == "containers"
+
list, err := utils.RenderList(gui.DockerCommand.DisplayContainers, utils.IsFocused(isFocused))
if err != nil {
return err
@@ -371,6 +372,11 @@ func (r *removeContainerOption) GetDisplayStrings(isFocused bool) []string {
return []string{r.description, color.New(color.FgRed).Sprint(r.command)}
}
+func (gui *Gui) handleHideStoppedContainers(g *gocui.Gui, v *gocui.View) error {
+ gui.DockerCommand.ShowExited = !gui.DockerCommand.ShowExited
+ return nil
+}
+
func (gui *Gui) handleContainersRemoveMenu(g *gocui.Gui, v *gocui.View) error {
container, err := gui.getSelectedContainer()
if err != nil {
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index c1fe9196..ccedcaa1 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -211,6 +211,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Handler: gui.handleContainersRemoveMenu,
Description: gui.Tr.Remove,
},
+ {
+ ViewName: "containers",
+ Key: 'e',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleHideStoppedContainers,
+ Description: gui.Tr.HideStopped,
+ },
{
ViewName: "containers",
Key: 's',
diff --git a/pkg/i18n/dutch.go b/pkg/i18n/dutch.go
index 36a0bc42..b5d642e7 100644
--- a/pkg/i18n/dutch.go
+++ b/pkg/i18n/dutch.go
@@ -31,6 +31,7 @@ func dutchSet() TranslationSet {
EditConfig: "verander de lazydocker configuratie",
Cancel: "annuleren",
Remove: "verwijder",
+ HideStopped: "Verberg gestopte containers",
ForceRemove: "geforceerd verwijderen",
RemoveWithVolumes: "verwijder met volumes",
RemoveService: "verwijder containers",
diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go
index 48442c0c..54384549 100644
--- a/pkg/i18n/english.go
+++ b/pkg/i18n/english.go
@@ -29,6 +29,7 @@ type TranslationSet struct {
Cancel string
CustomCommandTitle string
Remove string
+ HideStopped string
ForceRemove string
RemoveWithVolumes string
MustForceToRemoveContainer string
@@ -113,6 +114,7 @@ func englishSet() TranslationSet {
EditConfig: "edit lazydocker config",
Cancel: "cancel",
Remove: "remove",
+ HideStopped: "Hide/Show stopped containers",
ForceRemove: "force remove",
RemoveWithVolumes: "remove with volumes",
RemoveService: "remove containers",