Compare commits

...

2 Commits

Author SHA1 Message Date
Svilen Markov e0c15c7782 Correctly identify unhealthy containers 2025-08-09 13:20:00 +07:00
Svilen Markov 270d1f83fd More icon tweaks 2025-08-06 07:13:58 +07:00
2 changed files with 14 additions and 11 deletions

@ -378,10 +378,11 @@ details[open] .summary::after {
.icon {
object-fit: contain;
user-select: none;
}
.icon:not(.colored-icon) {
opacity: 0.8;
opacity: 0.85;
filter: grayscale(0.2);
transition: opacity 0.2s, filter 0.2s;
}

@ -49,7 +49,7 @@ func (widget *dockerContainersWidget) update(ctx context.Context) {
return
}
containers.sortByStateIconThenTitle()
containers.sortByStateIconThenName()
widget.Containers = containers
}
@ -125,7 +125,7 @@ type dockerContainer struct {
type dockerContainerList []dockerContainer
func (containers dockerContainerList) sortByStateIconThenTitle() {
func (containers dockerContainerList) sortByStateIconThenName() {
p := &dockerContainerStateIconPriorities
sort.SliceStable(containers, func(a, b int) bool {
@ -137,13 +137,17 @@ func (containers dockerContainerList) sortByStateIconThenTitle() {
})
}
func dockerContainerStateToStateIcon(state string) string {
switch state {
func dockerContainerStateToStateIcon(container *dockerContainerJsonResponse) string {
if strings.Contains(strings.ToLower(container.Status), "(unhealthy)") {
return dockerContainerStateIconWarn
}
switch strings.ToLower(container.State) {
case "running":
return dockerContainerStateIconOK
case "paused":
return dockerContainerStateIconPaused
case "exited", "unhealthy", "dead":
case "exited", "dead":
return dockerContainerStateIconWarn
default:
return dockerContainerStateIconOther
@ -187,13 +191,13 @@ func fetchDockerContainers(
dc.Children = append(dc.Children, dockerContainer{
Name: deriveDockerContainerName(child, formatNames),
StateText: child.Status,
StateIcon: dockerContainerStateToStateIcon(strings.ToLower(child.State)),
StateIcon: dockerContainerStateToStateIcon(child),
})
}
}
}
dc.Children.sortByStateIconThenTitle()
dc.Children.sortByStateIconThenName()
stateIconSupersededByChild := false
for i := range dc.Children {
@ -204,7 +208,7 @@ func fetchDockerContainers(
}
}
if !stateIconSupersededByChild {
dc.StateIcon = dockerContainerStateToStateIcon(dc.State)
dc.StateIcon = dockerContainerStateToStateIcon(container)
}
dockerContainers = append(dockerContainers, dc)
@ -278,7 +282,6 @@ func isDockerContainerHidden(container *dockerContainerJsonResponse, hideByDefau
return hideByDefault
}
func fetchDockerContainersFromSource(
source string,
category string,
@ -312,7 +315,6 @@ func fetchDockerContainersFromSource(
}
}
fetchAll := ternary(runningOnly, "false", "true")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()