mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-25 08:31:03 +00:00
Merge 42acc55256 into 577797d9ed
This commit is contained in:
commit
7e17e15ab8
10 changed files with 57 additions and 6 deletions
|
|
@ -48,6 +48,13 @@ gui:
|
||||||
wrapMainPanel: true
|
wrapMainPanel: true
|
||||||
# Side panel width as a ratio of the screen's width
|
# Side panel width as a ratio of the screen's width
|
||||||
sidePanelWidth: 0.333
|
sidePanelWidth: 0.333
|
||||||
|
# Determines whether each side panel is shown or not
|
||||||
|
sidePanelVisibility:
|
||||||
|
services: true
|
||||||
|
containers: true
|
||||||
|
images: true
|
||||||
|
volumes: true
|
||||||
|
networks: true
|
||||||
# Determines whether we show the bottom line (the one containing keybinding
|
# Determines whether we show the bottom line (the one containing keybinding
|
||||||
# info and the status of the app).
|
# info and the status of the app).
|
||||||
showBottomLine: true
|
showBottomLine: true
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,15 @@ type ThemeConfig struct {
|
||||||
OptionsTextColor []string `yaml:"optionsTextColor,omitempty"`
|
OptionsTextColor []string `yaml:"optionsTextColor,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SidePanelVisibilityConfig is for toggling visiblity of side panels.
|
||||||
|
type SidePanelVisibilityConfig struct {
|
||||||
|
Services bool `yaml:"services,omitempty"`
|
||||||
|
Containers bool `yaml:"containers,omitempty"`
|
||||||
|
Images bool `yaml:"images,omitempty"`
|
||||||
|
Volumes bool `yaml:"volumes,omitempty"`
|
||||||
|
Networks bool `yaml:"networks,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// GuiConfig is for configuring visual things like colors and whether we show or
|
// GuiConfig is for configuring visual things like colors and whether we show or
|
||||||
// hide things
|
// hide things
|
||||||
type GuiConfig struct {
|
type GuiConfig struct {
|
||||||
|
|
@ -123,6 +132,9 @@ type GuiConfig struct {
|
||||||
// If 0.333, then the side panels will be 1/3 of the screen's width
|
// If 0.333, then the side panels will be 1/3 of the screen's width
|
||||||
SidePanelWidth float64 `yaml:"sidePanelWidth"`
|
SidePanelWidth float64 `yaml:"sidePanelWidth"`
|
||||||
|
|
||||||
|
// Determines which side panels to show. Each panel defaults to `true` (visible).
|
||||||
|
SidePanelVisibility SidePanelVisibilityConfig `yaml:"sidePanelVisibility,omitempty"`
|
||||||
|
|
||||||
// Determines whether we show the bottom line (the one containing keybinding
|
// Determines whether we show the bottom line (the one containing keybinding
|
||||||
// info and the status of the app).
|
// info and the status of the app).
|
||||||
ShowBottomLine bool `yaml:"showBottomLine"`
|
ShowBottomLine bool `yaml:"showBottomLine"`
|
||||||
|
|
@ -373,6 +385,13 @@ func GetDefaultConfig() UserConfig {
|
||||||
WrapMainPanel: true,
|
WrapMainPanel: true,
|
||||||
LegacySortContainers: false,
|
LegacySortContainers: false,
|
||||||
SidePanelWidth: 0.3333,
|
SidePanelWidth: 0.3333,
|
||||||
|
SidePanelVisibility: SidePanelVisibilityConfig{
|
||||||
|
Services: true,
|
||||||
|
Containers: true,
|
||||||
|
Images: true,
|
||||||
|
Volumes: true,
|
||||||
|
Networks: true,
|
||||||
|
},
|
||||||
ShowBottomLine: true,
|
ShowBottomLine: true,
|
||||||
ExpandFocusedSidePanel: false,
|
ExpandFocusedSidePanel: false,
|
||||||
ScreenMode: "normal",
|
ScreenMode: "normal",
|
||||||
|
|
|
||||||
|
|
@ -175,11 +175,19 @@ func (gui *Gui) sidePanelChildren(width int, height int) []*boxlayout.Box {
|
||||||
return defaultBox
|
return defaultBox
|
||||||
}
|
}
|
||||||
|
|
||||||
return append([]*boxlayout.Box{
|
projectBox := &boxlayout.Box{
|
||||||
{
|
|
||||||
Window: sideWindowNames[0],
|
Window: sideWindowNames[0],
|
||||||
Size: 3,
|
Size: 3,
|
||||||
},
|
}
|
||||||
|
if len(sideWindowNames) == 1 {
|
||||||
|
projectBox = &boxlayout.Box{
|
||||||
|
Window: sideWindowNames[0],
|
||||||
|
Weight: 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return append([]*boxlayout.Box{
|
||||||
|
projectBox,
|
||||||
}, lo.Map(sideWindowNames[1:], func(window string, _ int) *boxlayout.Box {
|
}, lo.Map(sideWindowNames[1:], func(window string, _ int) *boxlayout.Box {
|
||||||
return accordionBox(&boxlayout.Box{Window: window, Weight: 1})
|
return accordionBox(&boxlayout.Box{Window: window, Weight: 1})
|
||||||
})...)
|
})...)
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ func (gui *Gui) getContainersPanel() *panels.SideListPanel[*commands.Container]
|
||||||
|
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
|
ConfigHidden: !gui.Config.UserConfig.Gui.SidePanelVisibility.Containers,
|
||||||
GetTableCells: func(container *commands.Container) []string {
|
GetTableCells: func(container *commands.Container) []string {
|
||||||
return presentation.GetContainerDisplayStrings(&gui.Config.UserConfig.Gui, container)
|
return presentation.GetContainerDisplayStrings(&gui.Config.UserConfig.Gui, container)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -459,10 +459,15 @@ func (gui *Gui) ShouldRefresh(key string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) initiallyFocusedViewName() string {
|
func (gui *Gui) initiallyFocusedViewName() string {
|
||||||
if gui.DockerCommand.InDockerComposeProject {
|
visiblePanels := gui.Config.UserConfig.Gui.SidePanelVisibility
|
||||||
|
|
||||||
|
if gui.DockerCommand.InDockerComposeProject && visiblePanels.Services {
|
||||||
return "services"
|
return "services"
|
||||||
}
|
} else if visiblePanels.Containers {
|
||||||
return "containers"
|
return "containers"
|
||||||
|
} else {
|
||||||
|
return "project"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) IgnoreStrings() []string {
|
func (gui *Gui) IgnoreStrings() []string {
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ func (gui *Gui) getImagesPanel() *panels.SideListPanel[*commands.Image] {
|
||||||
return a.ID < b.ID
|
return a.ID < b.ID
|
||||||
},
|
},
|
||||||
GetTableCells: presentation.GetImageDisplayStrings,
|
GetTableCells: presentation.GetImageDisplayStrings,
|
||||||
|
ConfigHidden: !gui.Config.UserConfig.Gui.SidePanelVisibility.Images,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ func (gui *Gui) getNetworksPanel() *panels.SideListPanel[*commands.Network] {
|
||||||
return a.Name < b.Name
|
return a.Name < b.Name
|
||||||
},
|
},
|
||||||
GetTableCells: presentation.GetNetworkDisplayStrings,
|
GetTableCells: presentation.GetNetworkDisplayStrings,
|
||||||
|
ConfigHidden: !gui.Config.UserConfig.Gui.SidePanelVisibility.Networks,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,9 @@ type SideListPanel[T comparable] struct {
|
||||||
// set this to true if you don't want to allow manual filtering via '/'
|
// set this to true if you don't want to allow manual filtering via '/'
|
||||||
DisableFilter bool
|
DisableFilter bool
|
||||||
|
|
||||||
|
// set to true if config file wants this panel to be hidden
|
||||||
|
ConfigHidden bool
|
||||||
|
|
||||||
// This can be nil if you want to always show the panel
|
// This can be nil if you want to always show the panel
|
||||||
Hide func() bool
|
Hide func() bool
|
||||||
}
|
}
|
||||||
|
|
@ -263,6 +266,10 @@ func (self *SideListPanel[T]) IsFilterDisabled() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *SideListPanel[T]) IsHidden() bool {
|
func (self *SideListPanel[T]) IsHidden() bool {
|
||||||
|
if self.ConfigHidden {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
if self.Hide == nil {
|
if self.Hide == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ func (gui *Gui) getServicesPanel() *panels.SideListPanel[*commands.Service] {
|
||||||
GetTableCells: func(service *commands.Service) []string {
|
GetTableCells: func(service *commands.Service) []string {
|
||||||
return presentation.GetServiceDisplayStrings(&gui.Config.UserConfig.Gui, service)
|
return presentation.GetServiceDisplayStrings(&gui.Config.UserConfig.Gui, service)
|
||||||
},
|
},
|
||||||
|
ConfigHidden: !gui.Config.UserConfig.Gui.SidePanelVisibility.Services,
|
||||||
Hide: func() bool {
|
Hide: func() bool {
|
||||||
return !gui.DockerCommand.InDockerComposeProject
|
return !gui.DockerCommand.InDockerComposeProject
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ func (gui *Gui) getVolumesPanel() *panels.SideListPanel[*commands.Volume] {
|
||||||
return a.Name < b.Name
|
return a.Name < b.Name
|
||||||
},
|
},
|
||||||
GetTableCells: presentation.GetVolumeDisplayStrings,
|
GetTableCells: presentation.GetVolumeDisplayStrings,
|
||||||
|
ConfigHidden: !gui.Config.UserConfig.Gui.SidePanelVisibility.Volumes,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue