diff --git a/cwidgets/compact/header.go b/cwidgets/compact/header.go index 19f7fb0..6dbd298 100644 --- a/cwidgets/compact/header.go +++ b/cwidgets/compact/header.go @@ -12,7 +12,7 @@ type CompactHeader struct { } func NewCompactHeader() *CompactHeader { - fields := []string{"", "NAME", "CID", "CPU", "MEM", "NET RX/TX", "IO R/W", "Pids"} + fields := []string{"", "NAME", "CID", "CPU", "MEM", "NET RX/TX", "IO R/W", "PIDS"} ch := &CompactHeader{} ch.Height = 2 for _, f := range fields { @@ -27,13 +27,13 @@ func (ch *CompactHeader) GetHeight() int { func (ch *CompactHeader) SetWidth(w int) { x := ch.X - autoWidth := calcWidth(w, 7) + autoWidth := calcWidth(w) for n, col := range ch.pars { - // set status column to static width - if n == 0 { + // set column to static width + if colWidths[n] != 0 { col.SetX(x) - col.SetWidth(statusWidth) - x += statusWidth + col.SetWidth(colWidths[n]) + x += colWidths[n] continue } col.SetX(x) diff --git a/cwidgets/compact/main.go b/cwidgets/compact/main.go index b1764ea..b0d2d27 100644 --- a/cwidgets/compact/main.go +++ b/cwidgets/compact/main.go @@ -99,13 +99,12 @@ func (row *Compact) SetWidth(width int) { return } x := row.X - autoWidth := calcWidth(width, 7) + autoWidth := calcWidth(width) for n, col := range row.all() { - // set status column to static width - if n == 0 { + if colWidths[n] != 0 { col.SetX(x) - col.SetWidth(statusWidth) - x += statusWidth + col.SetWidth(colWidths[n]) + x += colWidths[n] continue } col.SetX(x) diff --git a/cwidgets/compact/util.go b/cwidgets/compact/util.go index 356b9a0..b378209 100644 --- a/cwidgets/compact/util.go +++ b/cwidgets/compact/util.go @@ -9,10 +9,29 @@ import ( const colSpacing = 1 -// Calculate per-column width, given total width and number of items -func calcWidth(width, items int) int { - spacing := colSpacing * items - return (width - statusWidth - spacing) / items +// per-column width. 0 == auto width +var colWidths = []int{ + 3, // status + 0, // name + 0, // cid + 0, // cpu + 0, // memory + 0, // net + 0, // io + 4, // pids +} + +// Calculate per-column width, given total width +func calcWidth(width int) int { + spacing := colSpacing * len(colWidths) + var staticCols int + for _, w := range colWidths { + width -= w + if w == 0 { + staticCols += 1 + } + } + return (width - spacing) / staticCols } func centerParText(p *ui.Par) {