diff --git a/docs/keybindings/Keybindings_de.md b/docs/keybindings/Keybindings_de.md index 898317b4..913d8817 100644 --- a/docs/keybindings/Keybindings_de.md +++ b/docs/keybindings/Keybindings_de.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
e: bearbeite lazydocker Konfiguration o: öffne lazydocker Konfiguration - [: vorheriges Tab - ]: nächstes Tab m: zeige Protokolle enter: fokussieren aufs Hauptpanel + [: vorheriges Tab + ]: nächstes Tab## Container
- [: vorheriges Tab - ]: nächstes Tab d: entfernen e: hide/show stopped containers p: pause @@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct b: view bulk commands w: open in browser (first port is http) enter: fokussieren aufs Hauptpanel + [: vorheriges Tab + ]: nächstes Tab + /: filter list## Dienste @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: zeige Protokolle U: up project D: down project - [: vorheriges Tab - ]: nächstes Tab R: zeige Neustartoptionen c: führe vordefinierten benutzerdefinierten Befehl aus b: view bulk commands E: exec shell w: open in browser (first port is http) enter: fokussieren aufs Hauptpanel + [: vorheriges Tab + ]: nächstes Tab + /: filter list ## Images
- [: vorheriges Tab - ]: nächstes Tab c: führe vordefinierten benutzerdefinierten Befehl aus d: entferne Image b: view bulk commands enter: fokussieren aufs Hauptpanel + [: vorheriges Tab + ]: nächstes Tab + /: filter list## Volumes
- [: vorheriges Tab - ]: nächstes Tab c: führe vordefinierten benutzerdefinierten Befehl aus d: entferne Volume b: view bulk commands enter: fokussieren aufs Hauptpanel + [: vorheriges Tab + ]: nächstes Tab + /: filter list## Haupt diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md index 8cfab0de..fe99e262 100644 --- a/docs/keybindings/Keybindings_en.md +++ b/docs/keybindings/Keybindings_en.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
e: edit lazydocker config o: open lazydocker config - [: previous tab - ]: next tab m: view logs enter: focus main panel + [: previous tab + ]: next tab## Containers
- [: previous tab - ]: next tab d: remove e: hide/show stopped containers p: pause @@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct b: view bulk commands w: open in browser (first port is http) enter: focus main panel + [: previous tab + ]: next tab + /: filter list## Services @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: view logs U: up project D: down project - [: previous tab - ]: next tab R: view restart options c: run predefined custom command b: view bulk commands E: exec shell w: open in browser (first port is http) enter: focus main panel + [: previous tab + ]: next tab + /: filter list ## Images
- [: previous tab - ]: next tab c: run predefined custom command d: remove image b: view bulk commands enter: focus main panel + [: previous tab + ]: next tab + /: filter list## Volumes
- [: previous tab - ]: next tab c: run predefined custom command d: remove volume b: view bulk commands enter: focus main panel + [: previous tab + ]: next tab + /: filter list## Main diff --git a/docs/keybindings/Keybindings_fr.md b/docs/keybindings/Keybindings_fr.md index a55af852..07c1eac3 100644 --- a/docs/keybindings/Keybindings_fr.md +++ b/docs/keybindings/Keybindings_fr.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
e: modifier la configuration lazydocker o: ouvrire la configuration lazydocker - [: onglet précédent - ]: onglet suivant m: voir les enregistrements enter: focus paneau principal + [: onglet précédent + ]: onglet suivant## Conteneurs
- [: onglet précédent - ]: onglet suivant d: supprimer e: cacher/montrer les conteneurs arrêtés p: pause @@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct b: voir les commandes groupés w: ouvrir dans le navgateur (le premier port est http) enter: focus paneau principal + [: onglet précédent + ]: onglet suivant + /: filter list## Services @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: voir les enregistrements U: up project D: down project - [: onglet précédent - ]: onglet suivant R: voir les options de redémarrage c: executer une commande prédéfinie b: voir les commandes groupés E: executer le shell w: ouvrir dans le navgateur (le premier port est http) enter: focus paneau principal + [: onglet précédent + ]: onglet suivant + /: filter list ## Images
- [: onglet précédent - ]: onglet suivant c: executer une commande prédéfinie d: supprimer l'image b: voir les commandes groupés enter: focus paneau principal + [: onglet précédent + ]: onglet suivant + /: filter list## Volumes
- [: onglet précédent - ]: onglet suivant c: executer une commande prédéfinie d: supprimer le volume b: voir les commandes groupés enter: focus paneau principal + [: onglet précédent + ]: onglet suivant + /: filter list## Principal diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md index f606b880..7f134edb 100644 --- a/docs/keybindings/Keybindings_nl.md +++ b/docs/keybindings/Keybindings_nl.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
e: verander de lazydocker configuratie o: open de lazydocker configuratie - [: vorige tab - ]: volgende tab m: bekijk logs enter: focus hoofdpaneel + [: vorige tab + ]: volgende tab## Containers
- [: vorige tab - ]: volgende tab d: verwijder e: verberg gestopte containers p: pause @@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct b: view bulk commands w: open in browser (first port is http) enter: focus hoofdpaneel + [: vorige tab + ]: volgende tab + /: filter list## Diensten @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: bekijk logs U: up project D: down project - [: vorige tab - ]: volgende tab R: bekijk herstart opties c: draai een vooraf bedacht aangepaste opdracht b: view bulk commands E: exec shell w: open in browser (first port is http) enter: focus hoofdpaneel + [: vorige tab + ]: volgende tab + /: filter list ## Images
- [: vorige tab - ]: volgende tab c: draai een vooraf bedacht aangepaste opdracht d: verwijder image b: view bulk commands enter: focus hoofdpaneel + [: vorige tab + ]: volgende tab + /: filter list## Volumes
- [: vorige tab - ]: volgende tab c: draai een vooraf bedacht aangepaste opdracht d: verwijder volume b: view bulk commands enter: focus hoofdpaneel + [: vorige tab + ]: volgende tab + /: filter list## Hoofd diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md index a8ab2a1b..b14a9b34 100644 --- a/docs/keybindings/Keybindings_pl.md +++ b/docs/keybindings/Keybindings_pl.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
e: edytuj konfigurację o: otwórz konfigurację - [: poprzednia zakładka - ]: następna zakładka m: pokaż logi enter: skup na głównym panelu + [: poprzednia zakładka + ]: następna zakładka## Kontenery
- [: poprzednia zakładka - ]: następna zakładka d: usuń e: hide/show stopped containers p: pause @@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct b: view bulk commands w: open in browser (first port is http) enter: skup na głównym panelu + [: poprzednia zakładka + ]: następna zakładka + /: filter list## Serwisy @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: pokaż logi U: up project D: down project - [: poprzednia zakładka - ]: następna zakładka R: pokaż opcje restartu c: wykonaj predefiniowaną własną komende b: view bulk commands E: exec shell w: open in browser (first port is http) enter: skup na głównym panelu + [: poprzednia zakładka + ]: następna zakładka + /: filter list ## Obrazy
- [: poprzednia zakładka - ]: następna zakładka c: wykonaj predefiniowaną własną komende d: usuń obraz b: view bulk commands enter: skup na głównym panelu + [: poprzednia zakładka + ]: następna zakładka + /: filter list## Wolumeny
- [: poprzednia zakładka - ]: następna zakładka c: wykonaj predefiniowaną własną komende d: usuń wolumen b: view bulk commands enter: skup na głównym panelu + [: poprzednia zakładka + ]: następna zakładka + /: filter list## Główne diff --git a/docs/keybindings/Keybindings_tr.md b/docs/keybindings/Keybindings_tr.md index 0124bb1f..bcb7ac1c 100644 --- a/docs/keybindings/Keybindings_tr.md +++ b/docs/keybindings/Keybindings_tr.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
e: lazzydocker ayarlarını düzenle o: lazydocker ayarlarını aç - [: önceki sekme - ]: sonraki sekme m: kayıt defterini görüntüle enter: ana panele odaklan + [: önceki sekme + ]: sonraki sekme## Konteynerler
- [: önceki sekme - ]: sonraki sekme d: kaldır e: hide/show stopped containers p: pause @@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct b: view bulk commands w: open in browser (first port is http) enter: ana panele odaklan + [: önceki sekme + ]: sonraki sekme + /: filter list## Servisler @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: kayıt defterini görüntüle U: up project D: down project - [: önceki sekme - ]: sonraki sekme R: yeniden başlatma seçeneklerini görüntüle c: önceden tanımlanmış özel komutu çalıştır b: view bulk commands E: exec shell w: open in browser (first port is http) enter: ana panele odaklan + [: önceki sekme + ]: sonraki sekme + /: filter list ## Imajlar
- [: önceki sekme - ]: sonraki sekme c: önceden tanımlanmış özel komutu çalıştır d: imajı kaldır b: view bulk commands enter: ana panele odaklan + [: önceki sekme + ]: sonraki sekme + /: filter list## Alanlar
- [: önceki sekme - ]: sonraki sekme c: önceden tanımlanmış özel komutu çalıştır d: alanı kaldır b: view bulk commands enter: ana panele odaklan + [: önceki sekme + ]: sonraki sekme + /: filter list## Ana diff --git a/pkg/cheatsheet/generate.go b/pkg/cheatsheet/generate.go index 1e17cd92..bd9d230c 100644 --- a/pkg/cheatsheet/generate.go +++ b/pkg/cheatsheet/generate.go @@ -41,6 +41,7 @@ func generateAtDir(dir string) { for lang := range i18n.GetTranslationSets() { os.Setenv("LC_ALL", lang) mApp, _ := app.NewApp(mConfig) + mApp.Gui.SetupFakeGui() file, err := os.Create(dir + "/Keybindings_" + lang + ".md") if err != nil { diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 337b5cd7..1ffc8892 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -220,16 +220,12 @@ func (gui *Gui) Run() error { if err := gui.createAllViews(); err != nil { return err } + if err := gui.setInitialViewContent(); err != nil { + return err + } // TODO: see if we can avoid the circular dependency - gui.Panels = Panels{ - Projects: gui.getProjectPanel(), - Services: gui.getServicesPanel(), - Containers: gui.getContainersPanel(), - Images: gui.getImagesPanel(), - Volumes: gui.getVolumesPanel(), - Menu: gui.getMenuPanel(), - } + gui.setPanels() if err = gui.keybindings(g); err != nil { return err @@ -270,6 +266,17 @@ func (gui *Gui) Run() error { return err } +func (gui *Gui) setPanels() { + gui.Panels = Panels{ + Projects: gui.getProjectPanel(), + Services: gui.getServicesPanel(), + Containers: gui.getContainersPanel(), + Images: gui.getImagesPanel(), + Volumes: gui.getVolumesPanel(), + Menu: gui.getMenuPanel(), + } +} + func (gui *Gui) updateContainerDetails() error { return gui.DockerCommand.UpdateContainerDetails(gui.Panels.Containers.List.GetAllItems()) } @@ -465,3 +472,20 @@ func (gui *Gui) monitorContainerStats(ctx context.Context) { } } } + +// this is used by our cheatsheet code to generate keybindings. We need some views +// and panels to exist for us to know what keybindings there are, so we invoke +// gocui in headless mode and create them. +func (gui *Gui) SetupFakeGui() { + g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL, true, map[rune]string{}) + if err != nil { + panic(err) + } + gui.g = g + defer g.Close() + if err := gui.createAllViews(); err != nil { + panic(err) + } + + gui.setPanels() +} diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 908ce3d4..4c086469 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -546,13 +546,15 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { } for _, panel := range gui.allListPanels() { - bindings = append(bindings, &Binding{ - ViewName: panel.GetView().Name(), - Key: '/', - Modifier: gocui.ModNone, - Handler: wrappedHandler(gui.handleOpenFilter), - Description: gui.Tr.LcFilter, - }) + if !panel.IsFilterDisabled() { + bindings = append(bindings, &Binding{ + ViewName: panel.GetView().Name(), + Key: '/', + Modifier: gocui.ModNone, + Handler: wrappedHandler(gui.handleOpenFilter), + Description: gui.Tr.LcFilter, + }) + } } return bindings diff --git a/pkg/gui/views.go b/pkg/gui/views.go index 2d63faf7..e9e32dd4 100644 --- a/pkg/gui/views.go +++ b/pkg/gui/views.go @@ -117,10 +117,6 @@ func (gui *Gui) createAllViews() error { gui.Views.Information.Frame = false gui.Views.Information.FgColor = gocui.ColorGreen - if err := gui.renderString(gui.g, "information", gui.getInformationContent()); err != nil { - return err - } - gui.Views.Confirmation.Visible = false gui.Views.Confirmation.Wrap = true gui.Views.Menu.Visible = false @@ -133,7 +129,6 @@ func (gui *Gui) createAllViews() error { gui.Views.FilterPrefix.BgColor = gocui.ColorDefault gui.Views.FilterPrefix.FgColor = gocui.ColorGreen gui.Views.FilterPrefix.Frame = false - _ = gui.setViewContent(gui.Views.FilterPrefix, gui.filterPrompt()) gui.Views.Filter.BgColor = gocui.ColorDefault gui.Views.Filter.FgColor = gocui.ColorGreen @@ -144,6 +139,16 @@ func (gui *Gui) createAllViews() error { return nil } +func (gui *Gui) setInitialViewContent() error { + if err := gui.renderString(gui.g, "information", gui.getInformationContent()); err != nil { + return err + } + + _ = gui.setViewContent(gui.Views.FilterPrefix, gui.filterPrompt()) + + return nil +} + func (gui *Gui) getInformationContent() string { informationStr := gui.Config.Version if !gui.g.Mouse {