smem: allow column auto-sizing
This commit is contained in:
parent
29fc357a31
commit
272cb17cf9
2 changed files with 44 additions and 0 deletions
40
smem
40
smem
|
|
@ -471,6 +471,37 @@ def showfields(fields, f):
|
|||
for l in sorted(fields.keys()):
|
||||
print "%-8s %s" % (l, fields[l][-1])
|
||||
|
||||
def autosize(columns, fields, rows):
|
||||
colsizes = {}
|
||||
for c in columns:
|
||||
sizes = [1]
|
||||
|
||||
if not options.no_header:
|
||||
sizes.append(len(fields[c][0]))
|
||||
|
||||
if (options.abbreviate or options.percent) and 'a' in fields[c][2]:
|
||||
sizes.append(7)
|
||||
else:
|
||||
for r in rows:
|
||||
sizes.append(len(str(fields[c][1](r))))
|
||||
|
||||
colsizes[c] = max(sizes)
|
||||
|
||||
overflowcols = set(["command", "map"]) & set(columns)
|
||||
if len(overflowcols) > 0:
|
||||
overflowcol = overflowcols.pop()
|
||||
totnoflow = sum(colsizes.values()) - colsizes[overflowcol]
|
||||
try:
|
||||
ttyrows, ttycolumns = os.popen('stty size', 'r').read().split()
|
||||
ttyrows, ttycolumns = int(ttyrows), int(ttycolumns)
|
||||
except:
|
||||
ttyrows, ttycolumns = (24, 80)
|
||||
maxflowcol = ttycolumns - totnoflow - len(columns)
|
||||
maxflowcol = max(maxflowcol, 10)
|
||||
colsizes[overflowcol] = min(colsizes[overflowcol], maxflowcol)
|
||||
|
||||
return colsizes
|
||||
|
||||
def showtable(rows, fields, columns, sort):
|
||||
header = ""
|
||||
format = ""
|
||||
|
|
@ -493,6 +524,11 @@ def showtable(rows, fields, columns, sort):
|
|||
showfields(fields, missing)
|
||||
sys.exit(-1)
|
||||
|
||||
if options.autosize:
|
||||
colsizes = autosize(columns, fields, rows)
|
||||
else:
|
||||
colsizes = {}
|
||||
|
||||
for n in columns:
|
||||
f = fields[n][2]
|
||||
if 'a' in f:
|
||||
|
|
@ -503,6 +539,8 @@ def showtable(rows, fields, columns, sort):
|
|||
f = f.replace('a', 's')
|
||||
else:
|
||||
formatter.append(lambda x: x)
|
||||
if n in colsizes:
|
||||
f = re.sub(r"[0-9]+", str(colsizes[n]), f)
|
||||
format += f + " "
|
||||
header += f % fields[n][0] + " "
|
||||
|
||||
|
|
@ -626,6 +664,8 @@ parser.add_option("-c", "--columns", type="str",
|
|||
help="columns to show")
|
||||
parser.add_option("-t", "--totals", action="store_true",
|
||||
help="show totals")
|
||||
parser.add_option("-a", "--autosize", action="store_true",
|
||||
help="size columns to fit terminal size")
|
||||
|
||||
parser.add_option("-R", "--realmem", type="str",
|
||||
help="amount of physical RAM")
|
||||
|
|
|
|||
4
smem.8
4
smem.8
|
|
@ -95,6 +95,10 @@ User filter regular expression.
|
|||
|
||||
.SS OUTPUT FORMATTING
|
||||
|
||||
.TP
|
||||
.B \-a, \-\-autosize
|
||||
Size columns to fit terminal size.
|
||||
|
||||
.TP
|
||||
.BI "\-c " COLUMNS ", \-\-columns=" COLUMNS
|
||||
Columns to show.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue