diff options
| -rw-r--r-- | internal/collector/collector.go | 4 | ||||
| -rw-r--r-- | internal/display/display.go | 45 |
2 files changed, 29 insertions, 20 deletions
diff --git a/internal/collector/collector.go b/internal/collector/collector.go index bdd5ada..42ab689 100644 --- a/internal/collector/collector.go +++ b/internal/collector/collector.go @@ -64,10 +64,8 @@ func Run(ctx context.Context, host string, cfg *config.Config, store StatsStore, } mode := "" + // Always collect all CPU lines (cpu, cpu0, cpu1, ...) so display can toggle per-core view with key 1 cpustring := "cpu" - if !cfg.ShowCores { - cpustring = "cpu " - } for scanner.Scan() { select { case <-ctx.Done(): diff --git a/internal/display/display.go b/internal/display/display.go index 7627c63..fede729 100644 --- a/internal/display/display.go +++ b/internal/display/display.go @@ -87,10 +87,15 @@ func Run(ctx context.Context, cfg *config.Config, src stats.Source) error { case sdl.K_1: showCores = !showCores redrawBg = true + fmt.Println("==> Toggled show cores:", showCores) case sdl.K_2: showMem = !showMem + redrawBg = true + fmt.Println("==> Toggled show mem:", showMem) case sdl.K_3: showNet = !showNet + redrawBg = true + fmt.Println("==> Toggled show net:", showNet) case sdl.K_e: extended = !extended redrawBg = true @@ -141,18 +146,24 @@ func Run(ctx context.Context, cfg *config.Config, src stats.Source) error { } snap := src.Snapshot() - numStats := len(snap) - if cfg.ShowMem { - numStats += len(snap) + // Count total CPU bars we will draw (so width is shared across all bars) + numBars := 0 + for _, host := range sortedHosts(snap) { + if h := snap[host]; h != nil { + numBars += len(sortedCPUNames(h.CPU, showCores)) + } + } + if showMem { + numBars += len(snap) } - if cfg.ShowNet { - numStats += len(snap) + if showNet { + numBars += len(snap) } - if numStats == 0 { - numStats = 1 + if numBars == 0 { + numBars = 1 } - barWidth := (winW / int32(numStats)) - 1 + barWidth := (winW / int32(numBars)) - 1 if barWidth < 1 { barWidth = 1 } @@ -229,15 +240,15 @@ func drawCPUBar(renderer *sdl.Renderer, cur, prev collector.CPULine, barW int32, if scale <= 0 { return } - userPct := int((cur.User - prev.User) / int64(scale)) - nicePct := int((cur.Nice - prev.Nice) / int64(scale)) - sysPct := int((cur.System - prev.System) / int64(scale)) - idlePct := int((cur.Idle - prev.Idle) / int64(scale)) - iowaitPct := int((cur.Iowait - prev.Iowait) / int64(scale)) - irqPct := int((cur.IRQ - prev.IRQ) / int64(scale)) - softirqPct := int((cur.SoftIRQ - prev.SoftIRQ) / int64(scale)) - guestPct := int((cur.Guest - prev.Guest) / int64(scale)) - stealPct := int((cur.Steal - prev.Steal) / int64(scale)) + userPct := int(float64(cur.User-prev.User) / scale) + nicePct := int(float64(cur.Nice-prev.Nice) / scale) + sysPct := int(float64(cur.System-prev.System) / scale) + idlePct := int(float64(cur.Idle-prev.Idle) / scale) + iowaitPct := int(float64(cur.Iowait-prev.Iowait) / scale) + irqPct := int(float64(cur.IRQ-prev.IRQ) / scale) + softirqPct := int(float64(cur.SoftIRQ-prev.SoftIRQ) / scale) + guestPct := int(float64(cur.Guest-prev.Guest) / scale) + stealPct := int(float64(cur.Steal-prev.Steal) / scale) norm := func(v int) int { if v < 0 { |
