From e7b9cbd2769034a6106ef3560705c112b5b89c11 Mon Sep 17 00:00:00 2001 From: inv2004 Date: Sat, 11 Mar 2023 01:19:19 +0300 Subject: [PATCH] tui for light-mode term + v0.9.1 --- src/ttop/config.nim | 2 ++ src/ttop/tui.nim | 23 ++++++++++++++++------- ttop.nimble | 2 +- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/ttop/config.nim b/src/ttop/config.nim index ee85cff..111381f 100644 --- a/src/ttop/config.nim +++ b/src/ttop/config.nim @@ -13,6 +13,7 @@ type cmd*: string CfgRef* = ref object path*: string + light*: bool triggers*: seq[Trigger] var cfg: CfgRef @@ -36,6 +37,7 @@ proc initCfg*() = let toml = loadConfig() cfg = CfgRef( + light: toml{"light"}.getBool(), path: toml{"data", "path"}.getStr(getDataDir()) ) diff --git a/src/ttop/tui.nim b/src/ttop/tui.nim index a73c7be..5e16581 100644 --- a/src/ttop/tui.nim +++ b/src/ttop/tui.nim @@ -1,6 +1,7 @@ import illwill import os import procfs +import config import strutils import strformat import tables @@ -13,6 +14,10 @@ import blog import asciigraph from terminal import setCursorXPos +const fgDarkColor = fgWhite +const fgLightColor = fgBlack +var fgColor = fgDarkColor + proc stopTui() {.noconv.} = illwillDeinit() setCursorXPos(0) @@ -86,7 +91,7 @@ proc header(tb: var TerminalBuffer, info: FullInfoRef, hist, cnt: int, let sign = if mi.MemDiff > 0: '+' elif mi.MemDiff == 0: '=' else: '-' if checkMemLimit(mi): tb.write bgRed - tb.write fgGreen, "MEM: ", fgNone, fgWhite, styleBright, memStr + tb.write fgGreen, "MEM: ", fgNone, fgColor, styleBright, memStr tb.write fmt" {sign&abs(mi.MemDiff).formatS():>9} BUF: {mi.Buffers.formatS()} CACHE: {mi.Cached.formatS()}" if checkSwpLimit(mi): tb.write bgRed @@ -104,7 +109,7 @@ proc header(tb: var TerminalBuffer, info: FullInfoRef, hist, cnt: int, tb.write " | " let disk = info.disk[k] let bg = if checkDiskLimit(disk): bgRed else: bgNone - tb.write fgMagenta, disk.path, fgWhite, " ", bg, + tb.write fgMagenta, disk.path, fgColor, " ", bg, fmt"{formatD(disk.avail, disk.total)}", bgNone, fmt" (rw: {formatS(disk.ioUsageRead, disk.ioUsageWrite)})" if i == 0: @@ -127,7 +132,7 @@ proc header(tb: var TerminalBuffer, info: FullInfoRef, hist, cnt: int, if i > 0: tb.write " | " let net = info.net[k] - tb.write fgCyan, k, fgWhite, " ", formatS(net.netInDiff, + tb.write fgCyan, k, fgColor, " ", formatS(net.netInDiff, net.netOutDiff) proc graphData(stats: seq[StatV2], sort: SortField, width: int): seq[float] = @@ -233,7 +238,7 @@ proc table(tb: var TerminalBuffer, pi: OrderedTableRef[uint, PidInfo], tb.write ' '.repeat(tb.width-63), bgNone inc y var i: uint = 0 - tb.write fgWhite + tb.write fgColor for (_, p) in pi.pairs: if filter.len >= 2: if filter[1..^1] notin $p.pid and filter[1..^1] notin toLowerAscii(p.cmd): @@ -245,9 +250,9 @@ proc table(tb: var TerminalBuffer, pi: OrderedTableRef[uint, PidInfo], tb.write p.state tb.write " ", p.pid.cut(6, true, scrollX) if p.user == "": - tb.write " ", fgMagenta, int(p.uid).cut(8, false, scrollX), fgWhite + tb.write " ", fgMagenta, int(p.uid).cut(8, false, scrollX), fgColor else: - tb.write " ", fgYellow, p.user.cut(8, false, scrollX), fgWhite + tb.write " ", fgYellow, p.user.cut(8, false, scrollX), fgColor if p.mem >= rssLimit: tb.write bgRed tb.write " ", p.rss.formatS().cut(10, true, scrollX), bgNone @@ -273,7 +278,7 @@ proc table(tb: var TerminalBuffer, pi: OrderedTableRef[uint, PidInfo], cmd.add p.cmd else: cmd.add p.name - tb.write " ", fgCyan, cmd.cut(tb.width - 65, false, scrollX), fgWhite + tb.write " ", fgCyan, cmd.cut(tb.width - 65, false, scrollX), fgColor inc y if y > tb.height-3: @@ -324,6 +329,10 @@ proc tui*() = defer: stopTui() setControlCHook(exitProc) hideCursor() + + if getCfg().light: + fgColor = fgLightColor + var draw = false var (blog, hist) = moveBlog(0, "", 0, 0) var curSort = Cpu diff --git a/ttop.nimble b/ttop.nimble index cd94ea3..89e7ee3 100644 --- a/ttop.nimble +++ b/ttop.nimble @@ -1,6 +1,6 @@ # Package -version = "0.8.8" +version = "0.9.1" author = "inv2004" description = "Monitoring tool with historical snapshots and alerts" license = "MIT"