101 lines
3.1 KiB
Plaintext
101 lines
3.1 KiB
Plaintext
--:Minify:--
|
|
-- Color indices (sfgc):
|
|
-- 1=white, 2=red, 3=green, 4=blue, 5=cyan, 6=magenta, 7=yellow
|
|
-- 8=orange, 9=lime, 10=lightcyan, 11=brown, 12=darkgrey, 13=lightgrey, 14=purple, 15=chartreuse, 16=black
|
|
|
|
local C_LOGO = 0x00FFFF -- cyan
|
|
local C_WHITE = 0xFFFFFF -- white
|
|
local C_LABEL = 0xDBDBDB -- light grey (key names)
|
|
local C_SEP = 0x6D6D6D -- dark grey (---- separator)
|
|
local C_USER = 0x00FF00 -- green (user@host)
|
|
|
|
local function c(col) syscall.devctl(1, "sfgc", col) end
|
|
|
|
local username = syscall.getUsername() or "Unknown"
|
|
local hostname = syscall.getHostname() or "Unknown"
|
|
local userhost = username .. "@" .. hostname
|
|
|
|
local function formatUptime(ms)
|
|
local s = math.floor(ms / 1000)
|
|
local m = math.floor(s / 60)
|
|
local h = math.floor(m / 60)
|
|
local d = math.floor(h / 24)
|
|
s = s % 60; m = m % 60; h = h % 24
|
|
local parts = {}
|
|
if d > 0 then parts[#parts+1] = d .. "d" end
|
|
if h > 0 then parts[#parts+1] = h .. "h" end
|
|
if m > 0 then parts[#parts+1] = m .. "m" end
|
|
parts[#parts+1] = s .. "s"
|
|
return table.concat(parts, " ")
|
|
end
|
|
|
|
local host_str = syscall.getHost() or "Unknown"
|
|
local cc_ver = host_str:match("ComputerCraft ([%d%.]+)") or host_str
|
|
|
|
local info = {
|
|
{nil, userhost},
|
|
{nil, string.rep("-", #userhost)},
|
|
{"OS", syscall.version() or "Unknown"},
|
|
{"Host", cc_ver},
|
|
{"Arch", syscall.arch() or "Unknown"},
|
|
{"Uptime", formatUptime(syscall.getUptime() or 0)},
|
|
{"Tasks", tostring(#(syscall.getTasks() or {}))},
|
|
{"Shell", syscall.getEnviron("SHELL") or "Unknown"},
|
|
{"Terminal", "tty1"},
|
|
{"UID", tostring(syscall.getuid())},
|
|
{"Packages", "n/a (spm)"},
|
|
}
|
|
|
|
local logo = {
|
|
".. *. .. ",
|
|
" *= +@* +* ",
|
|
" .@#. -@@@= :#@. ",
|
|
" =@@+ *@@@# +@@= ",
|
|
" %@@%: *@@@# -%@@% ",
|
|
" :@@@@+ *@@@# .*@@@@: ",
|
|
" :*@@@%- *@@@# -@@@@*: ",
|
|
" =%@@#. *@@@# .#@@%= ",
|
|
" :=. :*@@= *@@@# =@@+: .=: ",
|
|
" %@#=..*# +@@@# #*..=#@# ",
|
|
" .@@@@+=# .%@%: #=+@@@@. ",
|
|
" .....=# -@= *+...:. ",
|
|
" -*%*-@= - =@-*%*- ",
|
|
" -@*. -@%. :%@- :*@- ",
|
|
" .#@#@* ",
|
|
" -#- ",
|
|
" ",
|
|
}
|
|
|
|
local lines = math.max(#logo, #info)
|
|
for i = 1, lines do
|
|
local logo_str = logo[i] or string.rep(" ", 36)
|
|
|
|
c(C_LOGO)
|
|
printInline(logo_str)
|
|
|
|
c(C_LABEL)
|
|
printInline("| ")
|
|
|
|
local row = info[i]
|
|
if row then
|
|
if row[1] == nil and i == 1 then
|
|
-- user@host line
|
|
c(C_USER)
|
|
printInline(row[2])
|
|
elseif row[1] == nil and i == 2 then
|
|
-- separator line
|
|
c(C_SEP)
|
|
printInline(row[2])
|
|
elseif row[1] then
|
|
-- label: value
|
|
c(C_LABEL)
|
|
printInline(row[1] .. ": ")
|
|
c(C_WHITE)
|
|
printInline(row[2])
|
|
end
|
|
end
|
|
|
|
c(C_WHITE)
|
|
print("")
|
|
end
|